2013-05-02 140 views
4

我有一個表,其中包含一個字段,title,我需要得到每個title的前3個字母數字字符。 title的某些值有",',\t,\n,或前置空格 - 應該忽略。得到前3個字母數字字符(只有數字或字母)

+--------+-----------------------------------------+---------------------+ 
| id  | title         | desired output  | 
+--------+-----------------------------------------+---------------------+ 
| 1  | "abcd"         | abc     | 
| 2  | 'lostworld        | los     | 
| 3  | \tsonof         | son     | 
| 4  | 12amrt         | 12a     | 
+--------+-----------------------------------------+---------------------+ 

desired output是我正在尋找的輸出。如果任何人都可以建議通用查詢,可以處理所有情況都很好。

只使用MySQL尋找解決方案。

回答

1

最好的辦法是使用正則表達式user-defined function

內置的正則表達式函數只支持匹配;沒有字符串替換就像你想在這裏

+1

我不認爲metalfight需要任何字符串替換 - 這個問題聽起來像他們只是想輸出(顯示)前3個字母數字字符,而不是將它們保存回數據庫。 – 2013-05-02 10:25:32

+0

正確,但OP所需的列不存在。爲了在現有列上使用正則表達式字符串替換創建動態列。 MySQL不支持直接替換正則表達式字符串。 – 2013-05-02 17:20:50

+0

啊,是的,我明白你的意思了;內建函數[REGEXP](http://dev.mysql.com/doc/refman/5.1/en/regexp.html)只會告訴你是否存在匹配,但OP將需要找到匹配的子字符串。 – 2013-05-03 07:54:48

相關問題