【发布时间】:2014-09-10 22:56:45
【问题描述】:
我有一个带有 REGEXP 的 mysql 查询,它匹配字段的开头与“A”、“An”和“The”,如果匹配,则后跟空格,然后从第一个空格的开头修剪字段,然后我匹配字段的开头带有特殊字符,如 (','',[:space:]) 如果是,则修剪所有前导特殊字符。 Mysql 查询是用CASE 像这样:
CASE
WHEN field_data_field_display_title_field_display_title_value REGEXP '(^(A|An|The)[[:space:]])' = 1 THEN
TRIM(SUBSTR(field_data_field_display_title_field_display_title_value , INSTR(field_data_field_display_title_field_display_title_value ,' ')))
WHEN field_data_field_display_title_field_display_title_value REGEXP '(^[\"\'[:space:]])' = 1 THEN
TRIM(SUBSTR(field_data_field_display_title_field_display_title_value ,2))
ELSE field_data_field_display_title_field_display_title_value
END
我无法修剪所有前导特殊字符,但我可以通过在 SUBSTR 函数中传递“2”来修剪第一个前导特殊字符。由于mysql不支持捕获组,所以我无法在捕获组中获取匹配值。
所以我的问题是如何使用 mysql 查询获得字段中第一个字母字符的位置,以便我可以在 SUBSTR 函数中传递该位置以修剪所有前导特殊字符。我尝试使用 [:alpha:] 类,例如:
TRIM(SUBSTR(field_data_field_display_title_field_display_title_value ,
INSTR(field_data_field_display_title_field_display_title_value ,[:alpha:])))
但它给出了 mysql 语法错误。或者任何人都可以向我建议任何其他方法来修剪所有前导特殊字符。
提前致谢!
【问题讨论】:
-
或许多其他类似问题:stackoverflow.com/…
-
您提供的第一个链接建议使用一些 mysql 库,但我无权在服务器上安装库。