2012-04-11 87 views
1

使用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 

我一直在使用正则表达式尝试通过在我的〜/ .sqliterc文件中加入“.load /usr/lib/sqlite3/pcre.so”这一行,但在查询中使用REGEXP会返回以“Error:no string”结尾的奇怪结果,因此可能有更清晰的方法?

+0

为别人跑了进去,当你比较对数据的“无弦”的错误发生。您可以在执行'REGEXP'操作之前通过执行'IS NOT NULL'比较来使用此模块解决此问题。一个适当的解决方案可能是补丁pcre.so将空数据视为空字符串。 – 2012-07-10 15:28:03

回答

2

你可以尝试这样的事情

SELECT DISTINCT 
    replace(replace(replace(replace(name, 
    ' ', ''), 
    '|', ''), 
    '?', ''), 
    '-', '') FROM your_table 
+0

这很好,嵌套替代是关键。 Ti ringrazio! – 2012-04-11 10:10:50

+0

@BrandonMinton:很高兴帮助你。帕戈! – Marco 2012-04-11 10:13:30

相关问题