首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用SQL Like对一定范围的字符进行模式匹配

使用SQL Like对一定范围的字符进行模式匹配
EN

Stack Overflow用户
提问于 2017-01-16 23:19:39
回答 3查看 3.3K关注 0票数 1

有没有办法在SQL LIKE中使用模式匹配,以匹配具有上限的可变数量的字符?

例如,我有一列可以有2-10个数字的“正确值”,任何大于10小于2的值都是不正确的。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2017-01-16 23:54:16

如果你真的想使用like,你可以这样做:

代码语言:javascript
运行
复制
where col like '__' or col_like '___' or . . .

或者:

代码语言:javascript
运行
复制
where col like '__%'  and        -- at least two characters
      col not like '_________%'  -- not 9 characters

更典型的方法是:

代码语言:javascript
运行
复制
where len(col) between 2 and 10

如果您想确保它们是数字:

代码语言:javascript
运行
复制
where len(col) between 2 and 10 and
      col not like '%[^0-9]%'
票数 4
EN

Stack Overflow用户

发布于 2017-01-16 23:29:43

您可以创建一个函数来检查每个字符,如下所示:

代码语言:javascript
运行
复制
DECLARE @TempField varchar(max)= '1v3Abc567'

DECLARE @FieldLength int = LEN(@TempField)
DECLARE @CountNumeric int = 0

WHILE @FieldLength > 0
BEGIN
SELECT @CountNumeric = @CountNumeric +  ISNUMERIC( SUBSTRING (@TempField,@FieldLength,1))
SET @FieldLength = @FieldLength - 1
END

SELECT @CountNumeric NumericCount
票数 -1
EN

Stack Overflow用户

发布于 2017-01-16 23:22:56

您可以使用Regex。

代码语言:javascript
运行
复制
SELECT * FROM mytable WHERE mycol LIKE '%[0-9]{2,10}%';

应该这么做(这是我想不到的,所以请仔细检查!

票数 -2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41679571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档