Big Query与SSMS模式匹配差异:查询含特殊字符或数字字符串的方法
语法差异说明
SQL Server(SSMS运行环境)的LIKE运算符原生支持方括号[]格式的字符集/区间匹配规则,但BigQuery的LIKE运算符仅支持两种基础通配符:
%:匹配0个及以上任意字符_:匹配单个任意字符
你代码中的[a-Z]在BigQuery的LIKE逻辑中会被识别为普通的字符串文本,不会按照字母区间做匹配,因此返回结果不符合预期。
需求实现方案
你需要查询返回包含特殊字符或数字的字符串,直接使用BigQuery内置的正则匹配函数REGEXP_CONTAINS即可实现,对应写法如下:
1. 匹配整个字符串中存在非英文字母的内容(包含数字、特殊符号、空格等,即只要不全是英文字母的记录都返回)
WHERE REGEXP_CONTAINS(column_name, r'[^a-zA-Z]')
2. 完全对齐你原SSMS代码逻辑(仅判断首字符不是英文字母的记录)
WHERE REGEXP_CONTAINS(column_name, r'^[^a-zA-Z]')
逻辑说明:
- 写法中
r''为BigQuery的原生字符串声明,可避免转义字符冲突 [^a-zA-Z]代表匹配任意非大小写英文字母的字符- 正则开头的
^代表锚定字符串首位,仅判断第一个字符的规则,和你原有SSMS写法逻辑完全一致。
内容的提问来源于stack exchange,提问作者onelineofcode
相关产品推荐
相关产品推荐

