2012-04-11 76 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

相關問題