重复命令 while true 或 x 次(相当于 while/for 循环)

2024-02-07

我想尽可能多地重复这个命令sometext在该领域note(表中的几行itemNotes可以有一个或多个sometext在该领域note):

UPDATE itemNotes  
SET 
  note = SUBSTR(note, 0, INSTR(LOWER(note), 'sometext')) || 'abc' || SUBSTR(note, INSTR(LOWER(note), 'sometext')+sometext_len)
WHERE 
  INSTR(LOWER(note), 'sometext') >= 0;

所以原始代码是:

While (SELECT * FROM itemNotes  WHERE note like "%sometext%") >1

    UPDATE itemNotes  
    SET 
      note = SUBSTR(note, 0, INSTR(LOWER(note), 'sometext')) || 'abc' || SUBSTR(note, INSTR(LOWER(note), 'sometext')+sometext_len)
    WHERE 
      INSTR(LOWER(note), 'sometext') >= 0;
END

但显然Sqlite3不支持While循环或for循环。他们可以用类似的东西来模拟this https://stackoverflow.com/a/50306716/3154274但我很难将我想要的内容与此查询集成:

    WITH b(x,y) AS 
    (
        SELECT 1,2 
        UNION ALL 
        SELECT x+ 1, y + 1 

    FROM b 
    WHERE x < 20
) SELECT * FROM b;

知道如何做到这一点吗?

PS:我没用过replace因为我想替换所有的大小写组合sometext (e.g. sometext, SOMEtext, SOmeText...)比照这个question https://stackoverflow.com/a/56243026/3154274


当前输入和所需输出:

对于单行,注释字段可能看起来像(并且表中的许多行itemNotes可能看起来像这样):

There is SOmetext and also somETExt and more SOMETEXT and even more sometext

查询应输出:

There is abc and also abc and more abc and even more abc

我正在 zotero.sqlite 上执行此操作,它是由this https://github.com/zotero/zotero/blob/26056c87f1d0b31dc56981adaabcab8fc2f85294/resource/schema/userdata.sql文件(第 85 行)。该表是由该查询创建的

CREATE TABLE itemNotes (
    itemID INTEGER PRIMARY KEY,
    parentItemID INT,
    note TEXT,
    title TEXT,
    FOREIGN KEY (itemID) REFERENCES items(itemID) ON DELETE CASCADE,
    FOREIGN KEY (parentItemID) REFERENCES items(itemID) ON DELETE CASCADE
);

您只需在查询中得到答案:

UPDATE itemNotes  
SET 
  note = SUBSTR(note, 0, INSTR(LOWER(note), 'sometext')) || 'abc' || SUBSTR(note, INSTR(LOWER(note), 'sometext')+sometext_len)
WHERE 
  note LIKE "%sometext%";

它将更新包含以下内容的所有行sometext in the note field

UPDATE

如果您想更新在不同情况下多次出现的字段并维护文本的其余部分,最简单的解决方案是使用regex为此你需要一个扩大 https://stackoverflow.com/questions/38877856/replace-a-part-of-a-string-with-regexp-in-sqlite3

UPDATE itemNotes  
SET 
  note = regex_replace('\bsometext\b',note,'abc')
WHERE 
  note LIKE "%sometext%";
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

重复命令 while true 或 x 次(相当于 while/for 循环) 的相关文章

随机推荐

  • 适用于 Android 的 VoIP 库 [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我需要在我的 Android 应用程序中集成 VoIP 服务 有没有免费的 最好的开源 库 我需要图书馆至少允许通过互联网进行语音通话 而
  • 重写 Android 方法时,Eclipse 插入 arg0、arg1 等而不是正确的参数名称

    当我在 Eclipse 中重写 Android 类的方法时 我得到无用的参数名称 如 arg0 arg1 等 例如 当重写来自SQLiteOpenHelper I get Override public void onCreate SQLi
  • 如何防止浏览器标题中出现 blob + guid

    基本上 我正在做的是在服务器上生成一个 PDF 文件并通过 javascript 在浏览器中显示它 如下所示 file new window Blob data type application pdf var fileUrl URL cr
  • Safari 添加尾部斜杠

    我有一个 ASP NET 网站 它使用 URLRewrite 2 删除 URL 中的尾部斜杠 我们注意到 Mac 上的 Safari 不遵守此规则 它始终在 URL 中留下尾部斜杠 SEO Moz 显示两个 URL 这似乎是潜在的重复内容问
  • 为什么不再有 PECL 扩展(例如 pecl_http)的 Windows 二进制文件?

    我正在开发一个在 Windows 上运行的 PHP 项目 能够使用 pecl http 而不是使用 cURL 并重新发明轮子来完成 pecl 扩展所做的所有很酷的事情 例如解析标头 会非常方便等等 我在所有地方 包括 PHP 站点 都读到
  • Kafka简单消费者间歇性丢失消息

    我有一个 Kafka 应用程序 我一直在其中使用 kafka console consumer sh 消费消息 如下所示 kafka console consumer sh zookeeper zookeeperhost 2181 topi
  • Scikit 学习如何打印混淆矩阵标签?

    所以我使用 sci kit learn 对一些数据进行分类 我有 13 个不同的类值 类别来对数据进行分类 现在我已经能够使用交叉验证并打印混淆矩阵 但是 它只显示 TP 和 FP 等 没有类标签 所以我不知道哪个类是什么 下面是我的代码和
  • 如何在局域网中找到我的服务器?

    我有两个自己的 C 和 Java 应用程序 服务器和客户端 它既在一个局域网内 又可以通过指定的端口传输数据 我想让客户端可以找到服务器的IP 但怎么办呢 使用地址掩码枚举所有可能的 IP 坏主意 这会花费很多时间 可能存在某种方式 我可以
  • 在控制器中找不到名称空间内的 Ruby on Rails 模型

    我是 Rails 新手 无法解决这个问题 我有一个控制器 Admin Blog EntriesController 定义在app controllers admin blog entries controller rb 我有一个模型叫 Bl
  • 无法在 Ubuntu 22.04 操作系统上通过 vscode sftp 扩展连接到 AWS EC2 服务器

    我曾经连接 Linode 和 GCP 提供的远程服务器 并通过 Sftp 扩展使用 Visual Studio Code 一切正常 但是 使用相同的配置集 我无法连接到我的 Aws EC2 服务器 以下是sftp json 敏感信息已更改
  • 如何将多个属性传递到 Angular.js 属性指令中?

    我有一个属性指令限制如下 restrict A 我需要传入两个属性 一个数字和一个函数 回调 使用指令在指令中访问它们attrs object 如果指令是元素指令 则受限制 E 我可以这样
  • std::call_once 是无锁的吗?

    我想知道 std call once 锁是否已释放 There https codereview stackexchange com questions 117468 stdonce flag and stdcall once implem
  • C# SSL 安全套接字

    我有一个用 C 编写的 运行良好的通信器应用程序 现在我需要实现与服务器的安全连接 我尝试将 Socket 和 TcpClient 对象更改为 SslStream 但出现了一些错误 首先 我使用 makecert 生成了一个 cer 证书
  • 将方法作为参数传递与直接调用方法

    我在一些示例中看到了作为参数传递的方法 如果我可以从另一种方法调用一种方法 为什么我应该将方法作为参数传递 这个设计背后的目的是什么 从一种方法调用另一种方法 使用委托或将方法作为参数传递Action 将方法作为参数传递可用于防止依赖和耦合
  • 如何仅使用 CSS 来圆化我的 div 标签区域的角?

    我使用 div 标签来定义网页中的区域 我设置了所有明显的东西 如背景 大小 填充等 但它都是非常方形的 我该如何使用onlyCSS 圆角 这里有一个简单的 HTML 文档来演示如何仅通过 CSS 来实现它
  • 如何在没有浏览器检测的情况下识别“输入”事件中的错误行为?

    我将从问题开始 当特定浏览器的某个功能的实现有错误 并且您的 JavaScript 需要知道当前浏览器是否有该有错误的实现 以便它可以使用替代策略时 如何在不进行浏览器类型嗅探的情况下确定该实现是否有错误 这通常被认为是不好的 整个情况是这
  • 将纹理复制到纹理

    我已经完成了 2 个使用共享资源的程序 在 SlimDX 和 DirectX10 上运行 一个程序将在 3D 网格上显示共享纹理 第二个程序将加载图像作为纹理 到目前为止 每次从新图像更新纹理时 我都需要传递共享处理 现在 有没有一种方法可
  • Node.JS 验证 Google 身份验证令牌

    我正在尝试使用 Express JS 框架构建 Node JS REST 服务器 该框架为移动应用程序集成了 Google 身份验证 使用的 Node JS 版本是 0 12 7 我在验证从应用程序收到的 Google 令牌时遇到问题 因为
  • 在 Pandas 中将元组中的字符串拆分为列

    我有以下内容DataFrame where Track ID是行索引 我怎样才能分割字符串stats列分成5列数字 Track ID stats 14 0 0 00924175824176 0 41 0 742016492568 0 003
  • 重复命令 while true 或 x 次(相当于 while/for 循环)

    我想尽可能多地重复这个命令sometext在该领域note 表中的几行itemNotes可以有一个或多个sometext在该领域note UPDATE itemNotes SET note SUBSTR note 0 INSTR LOWER