我正在尝试选择名称无效的所有客户。
名称中允许的字符为:
- 所有Unicode字母[a-z] [A-Z]和其他字母,如(á,é,í,ó,ú,ü,ñ等......)
- 所有数字[0-9]
- 仅限这些特殊字符(空格,撇号,短划线,点)
这是我到目前为止所得到的:
SELECT c.*
FROM customers c
WHERE c.name TRIM(c.name) NOT REGEXP '^[[:alpha:]]+$');
这将选择名称中包含任何非字母数字字符的所有客户。我也需要允许空格,撇号,短划线和点。
示例:
ábc é --> good
á bcd --> good
abc déf --> good
ab cd éf --> good
a-1 b4. --> good
a 123-- --> good
a 12'34 .-56 --> good
ábc" é --> bad (has double quotes)
á [bcd] --> bad (has square brackets)
ab déf --> bad (has a tab)
ab *cd* éf --> bad (has *)
(a-1 b4.) --> bad (has brackets)