sql - 正则表达式数字和破折号
问题描述
我很想在我的LIKE
条款上有一个正则表达式,并给出以下标准:
- 它应该只有13 个长度的字符
- 前 8 个字符应该是数字
- 第 9 个字符应附加一个破折号 (
-
) - 其余 4 个字符是其余的数字。
例子:
12345678-9123
98765432-1234
目前有这个功能:
CREATE FUNCTION [dbo].[FN_VALIDATE_ID](@TX_INPUT VARCHAR(50))RETURNS BIT AS
BEGIN
DECLARE @bitInputVal AS BIT = 1
DECLARE @InputText VARCHAR(50)
SET @InputText = LTRIM(RTRIM(ISNULL(@TX_INPUT,'')))
IF @InputText <> '' AND LEN(@InputText) = 13
BEGIN
SET @bitInputVal = CASE
WHEN @InputText LIKE '%^[0-9]%' THEN 1
ELSE 0
END
END
RETURN @bitInputVal
END
解决方案
您甚至不需要 UDF,因为 SQL Server 的增强型LIKE
运算符可以处理此要求:
SELECT *
FROM yourTable
WHERE col LIKE '[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]';
-- \ 8 digits / - \ 4 digits /
推荐阅读
- python - Python:对列表进行排序,使 5.10 在 5.9 之后
- java - Gradle:无法通知构建侦听器
- botframework - 我可以合并现有的 Bot 构建以在 Bot Composer 中运行吗
- git - Git 在单次提交中从 master 获取快照
- javascript - 如何将页面链接导航到特定 div?
- java - 无法识别的 VM 选项“AggressiveOpts”
- google-chrome - 安装时有什么方法可以自动固定 Chrome 扩展程序?
- r - 如何在 ggplot2 中绘制 2 个样本的 QQ 图?
- sql-server - 遍历 SQL Server 中的逗号分隔值
- json - Axios 解析打字稿对象不正确