Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 如何删除列中的非字母数字字符?_Sql_Sqlite - Fatal编程技术网

Sql 如何删除列中的非字母数字字符?

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

使用sqlite3,我有一个简单的表,如下所示:

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,以便将空数据视为空字符串。