【问题标题】:How to do replace with wildcards in SQLite?如何在 SQLite 中用通配符替换?
【发布时间】:2014-01-02 20:50:38
【问题描述】:

我正在尝试替换 SQLite 数据库中的一堆字符串。

我想从一开始就删除CHECKCARD \d\d\d\d(正则表达式)。

SQLite 的replace 有这个功能吗?

即, CHECKCARD 1215 AA BB CC 应该变成 AA BB CC

CHECKCARD 0715 DD EE 应该变成DD EE

我试过了

update ZUSERPAYEE set ZNAME = replace (ZNAME,"CHECKCARD ____ ","");

但这没有用。

我需要它是一个单行命令......所以我可以从 Mac 上的终端运行。

【问题讨论】:

    标签: sqlite replace wildcard


    【解决方案1】:

    SQLite substr() 函数应该是你的救星:

    UPDATE ZUSERPAYEE
    SET ZNAME = substr(ZNAME, 16)
    WHERE ZNAME LIKE "CHECKCARD %"
    

    这将查找 ZNAME 以 CHECKCARD 开头的任何行,并将 ZNAME 的值替换为从第 16 个字符(即 CHECKCARD #### 之后)到末尾的子字符串。

    More on SQLite core functions, including a surprisingly featureful set of string handling functions.

    【讨论】:

    • 让我成为推动你声望超过 2000 的人!谢谢
    • @Ze'ev 为什么,谢谢,我很高兴能帮到你!
    • WHERE 子句可以放在 SET 子句之前吗? SET 和 WHERE 可以小写吗?只是好奇。
    • @Ze'ev WHERE 子句需要跟在 SET 子句之后;通常,每种类型的 SQL 查询或语句对于它接受的子句都有其自己的要求顺序,您的数据库引擎手册将对此有所帮助。这些或任何其他 SQL 关键字都不区分大小写;我通常更喜欢大写的 SQL 关键字和小写的表和字段名称,但如果您想使用相反的约定,它也可以工作。 (不过,它在实践中并不常见,因此您可能会考虑采用大写-关键字-小写-名称约定,纯粹是因为它几乎无处不在。)
    猜你喜欢
    • 2011-03-07
    • 2017-03-19
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-26
    • 2016-11-24
    • 1970-01-01
    相关资源
    最近更新 更多