Sql 如何删除列中的非字母数字字符?
使用sqlite3,我有一个简单的表,如下所示:Sql 如何删除列中的非字母数字字符?,sql,sqlite,Sql,Sqlite,使用sqlite3,我有一个简单的表,如下所示: ArtistID Name --------------------------------- 0 andres segovia 1 andres|segovia| 2 ?andres-segovia 3 andres segovia and john 4 anya marina 5
ArtistID Name
---------------------------------
0 andres segovia
1 andres|segovia|
2 ?andres-segovia
3 andres segovia and john
4 anya marina
5 aphex twin
6 aphex-twin
ArtistID Name
---------------------------------
0 andressegovia
1 andressegovia
2 andressegovia
3 andressegoviaandjohn
4 anyamarina
5 aphextwin
6 aphextwin
要看到这样的结果,select将是什么样子的:
ArtistID Name
---------------------------------
0 andres segovia
1 andres|segovia|
2 ?andres-segovia
3 andres segovia and john
4 anya marina
5 aphex twin
6 aphex-twin
ArtistID Name
---------------------------------
0 andressegovia
1 andressegovia
2 andressegovia
3 andressegoviaandjohn
4 anyamarina
5 aphextwin
6 aphextwin
我曾尝试使用regex功能,将“.load/usr/lib/sqlite3/pcre.so”行包含到我的~/.sqliterc文件中,但在查询中使用REGEXP会返回奇怪的结果,结果以“Error:no string”结尾,因此可能有更清晰的方法吗?您可以尝试类似的方法
SELECT DISTINCT
replace(replace(replace(replace(name,
' ', ''),
'|', ''),
'?', ''),
'-', '') FROM your_table
这很有效,嵌套替换是关键。Ti ringrazio@布兰登·曼顿:很高兴帮助你。普雷戈!这对于示例数据集非常有效。但问题是关于移除所有非阿尔法字符。如果您事先不知道数据集中存在哪些非alpha字符,该怎么办?SQLite中是否有这样的设计?对于任何其他运行过它的人来说,与数据进行比较时都会出现“无字符串”错误。在执行
REGEXP
操作之前,您可以通过执行IS NOT NULL
比较来解决此问题。一个合适的修复方法可能是修补pcre.so,以便将空数据视为空字符串。