Zuz*_*ufu 1 sql t-sql sql-server
我有一个 nvarchar(50) 列,myCol其中包含以下 16 位字母数字值,以“0”开头:
0b00d60b8d6cfb19, 0b00d60b8d6cfb05, 0b00d60b8d57a2b9
我正在尝试删除myCol其值与这 3 个条件不匹配的行。
通过阅读这篇文章,我能够选择以“0”开头的记录。然而,尽管是[a-z0-9]正则表达式的一部分,它仍然不断选择myCol包含特殊字符的值,例如00-d@!b8-d6/f&#b. 以下是我的选择查询:
SELECT * from Table
WHERE myCol LIKE '[0][a-z0-9]%' AND LEN(myCol) = 16
Run Code Online (Sandbox Code Playgroud)
应如何更改表达式以仅选择其myCol值不包含特殊字符的行?
如果该值必须仅包含 az 和数字,并且必须以 a 开头,0则可以使用以下内容:
SELECT *
FROM (VALUES(N'0b00d60b8d6cfb19'),
(N'0b00d60b8d6cfb05'),
(N'0b00d60b8d57a2b9'),
(N'00-d@!b8-d6/f&#b'))V(myCol)
WHERE V.myCol LIKE '0%' --Checks starts with a 0
AND V.myCol NOT LIKE '%[^0-9A-z]%' --Checks only contains alphanumerical characters
AND LEN(V.myCol) = 16;
Run Code Online (Sandbox Code Playgroud)
第二个子句的作用是LIKE匹配任何不是字母数字字符的字符。then NOT(显然)相反,这意味着仅当值仅包含字母数字字符时表达式才解析为 TRUE。
| 归档时间: |
|
| 查看次数: |
1678 次 |
| 最近记录: |