sql - patindex t-sql 特殊字符
问题描述
如何检查!@#$%^&*()_-+
字符串中是否存在这些特殊字符?
我试过了
SELECT PATINDEX('!@#$%^&*()_-+', 'test-');
SELECT PATINDEX('[!@#$%^&*()_-+]', 'test-');
SELECT PATINDEX('%[!@#$%^&*()_-+]%', 'test-');
但全部返回 0,它应该返回 5,有什么帮助吗?
解决方案
the是or模式-
中的一个特殊字符。如果它在第一个位置以外的任何位置,则它是一个字符范围 - 例如所有数字都由.LIKE
PATINDEX()
[0-9]
您可以通过移动条件来做您想做的事情:
PATINDEX('%[-!@#$%^&*()_+]%', 'test-'),
不幸的是,PATINDEX()
模式不支持转义字符。您还可以将此逻辑表示为LIKE
and CASE
:
(CASE WHEN 'test-' LIKE '%[-!@#$%^&*()_+]%' ESCAPE '$' THEN 1 ELSE 0 END)
或使用“非”模式:
(CASE WHEN 'test-' NOT LIKE '%[^0-9a-zA-Z]%' THEN 0 ELSE 1 END)
推荐阅读
- c# - 如何以编程方式设置按钮样式(第 2 部分)?
- nginx - nginx转发同域请求
- pyqt5 - PyQt5 获取具有多个值的输入
- puppeteer - 如何记录发送到 Puppeteer/Chrome 开发者的每个事件
- math - 使用 DrRacket(方案)在偶数个垫子上跳蛙
- azure - 如何将 Azure 测试计划与管道相结合?
- visual-studio - 如何使用 WSL 从 Bash 构建现有的仅限 Windows 的 Visual Studio 项目
- python - Python脚本调用api并返回json输出
- c# - pt-BR 的 Bot Framework Emulator 语言环境问题
- terminal - Iterm2 首选项:显示带有目录、日期和 git 的栏