Cla*_*ton 17 regex sql sql-server
我有以下REGEX:^ [ - A-Za-z0-9 /.]+$
这当前检查输入到文本框中的值是否与此匹配.如果没有,它会抛出错误.
我需要检查是否有任何内容已经进入与此不匹配的数据库.
我累了:
SELECT * FROM *table* WHERE ([url] NOT LIKE '^[-A-Za-z0-9/.]+$')
SELECT * FROM *table* WHERE PATINDEX ('^[-A-Za-z0-9/.]+$', [url])
Run Code Online (Sandbox Code Playgroud)
UPDATE
经过一些研究后我才意识到我不认为我可以使用REGEXP.
我以为我可以做这样的事情?它没有给我预期的结果,但它的运行不同于其他任何东西.任何人都可以发现它有什么问题吗?
SELECT *,
CASE WHEN [url] LIKE '^[-A-Za-z0-9/.]+$'
THEN 'Match'
ELSE 'No Match'
END Validates
FROM
*table*
Run Code Online (Sandbox Code Playgroud)
Cla*_*ton 17
感谢大家的帮助.
这就是我最后使用的:
SELECT *,
CASE WHEN [url] NOT LIKE '%[^-A-Za-z0-9/.+$]%'
THEN 'Valid'
ELSE 'No valid'
END [Validate]
FROM
*table*
ORDER BY [Validate]
Run Code Online (Sandbox Code Playgroud)
Luc*_*ski 15
免责声明:最初的问题是关于MySQL.SQL Server的答案如下.
在MySQL中,正则表达式语法如下:
SELECT * FROM YourTable WHERE (`url` NOT REGEXP '^[-A-Za-z0-9/.]+$')
Run Code Online (Sandbox Code Playgroud)
使用该REGEXP子句代替LIKE.后者用于使用%和_通配符进行模式匹配.
由于你犯了一个拼写错误,并且你正在使用SQL Server(而不是MySQL),你必须创建一个用户定义的CLR函数来公开正则表达式功能.
请查看本文以获取更多详细信息.
| 归档时间: |
|
| 查看次数: |
102535 次 |
| 最近记录: |