J.D*_*.D. 4 sql-server regular-expression t-sql regex sql-server-2016
例如,如果我运行以下查询,WHERE 子句中的表达式将只匹配数字前的第一个字母,但有没有办法先匹配一个或多个字母(例如,在字母数量可变的情况下)在我过滤的字段中的数字之前)?
SELECT FilteredField
FROM Table
WHERE FilteredField LIKE '[a-zA-Z][0-9]'
Run Code Online (Sandbox Code Playgroud)
示例数据:
本质上,当使用 LIKE 运算符时,我正在寻找与 RegEx +等效的 SQL Server 2016 。
And*_*y M 12
如果您正在谈论纯粹在 Transact-SQL 中解决这个问题,您可以使用以下过滤器覆盖示例数据中的所有这些情况:
WHERE FilteredField LIKE '%[a-zA-Z][0-9]'
Run Code Online (Sandbox Code Playgroud)
如果你想额外规定数字前的所有字符必须是拉丁字母,你需要有点创意:
WHERE FilteredField LIKE '%[a-zA-Z][0-9]'
AND FilteredField NOT LIKE '%[^a-zA-Z]%[a-zA-Z][0-9]'
Run Code Online (Sandbox Code Playgroud)
基本上,您是在说:
该值必须以字母和数字结尾,但该字母之前的任何内容都不能是非字母。
如果这是您所追求的,则无法仅使用内置语法通过单个条件来指定这一点。
归档时间: |
|
查看次数: |
686 次 |
最近记录: |