如何删除sqlite3中(和)之间的所有TEXT /数字?

时间:2009-08-30 23:07:01

标签: sqlite

我一直在试图弄清楚如何删除sqlite3 db中的列中的(和)之间的文本/数字。我试过rtrim,ltrim,substr()都无济于事。任何专家sqlite3大师关心帮助我吗?我很感激。感谢。

1 个答案:

答案 0 :(得分:0)

部分可能依赖于您的SQLite实现。来自the docs

  

REGEXP运算符是regexp()用户函数的特殊语法。默认情况下没有定义regexp()用户函数,因此使用REGEXP运算符通常会导致错误消息。如果在运行时添加了名为“regexp”的用户定义函数,则将调用该函数以实现REGEXP运算符。

如果您的实现确实定义了REGEXP,那么它应该像“(.*?)\(.*?\)(.*)”的正则表达式一样简单,只返回第1组和第2组以忽略什么是在括号内。

这种方法不可移植,因为大多数SQLite实现可能没有定义REGEXP

有人在this forum最近经历了一个长篇大论,要求几乎相同的事情,他没有任何运气。据我所知,没有内置功能可以做到这一点。

他的最终答案是剪掉一定数量的字符,因为所有数据都统一以'@ xyz.com'结尾 - 如果你的数据同样均匀,你可以修剪掉前导和尾随X和Y字符。

事实上,回到 2003 someone made a patch for charindex support,但由于某种原因,它显然从未添加到主干中。其他人提出a similar patch with more functionality,但这需要您加载外部共享库 - 再次, 可移植。

最后一个可能是您的最佳选择 - 在C中编写共享库,LOADing it from SQLite。或者你可以用你使用SQLite的任何语言实现字符串修改:)