2013-05-02 114 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