在 SQL 中检查一个字符串是否包含子字符串和数字的组合

3

如何编写一个SQL where语句,以检查一个字符串是否包含某个子字符串和一个数字。例如:

字符串:macsea01

其中字符串类似于'macsea'加上一个数字


3
字符串函数非常依赖于不同的数据库厂商,因此请在提问时标记您使用的特定数据库。为什么要“标记我的关系型数据库”? - Eric Brandt
2个回答

1

正则表达式是这个问题最显而易见的解决方案。如果没有关于字符串特定格式的更多细节,我建议使用以下内容,它将匹配字母表中的一个字母后紧跟着一个数字的序列:

where column_name like '%[a-zA-Z][0-9]%'


如果你要查找字符串开头的 macsea,后面跟着一个数字,那么它应该是:
where column_name like 'macsea[0-9]%'


1
我猜需求是检查 XXXXX#### 格式,所以也许可以使用 ^[a-zA-Z]+[0-9]+$ - Alexey Larionov
@AlexLarionov OP写道:“如果一个字符串包含某个子字符串和一个数字”,那么他想要一个SUB字符串,而不是匹配整个字符串。 - Hawk

0

正则表达式在这里似乎有点棘手,根据您的需求,您可以将字符串分成几个部分,首先是文本部分,然后取余下的字符串并尝试将其转换为数字。

像这样的东西(但我认为这个特定的代码是错误的)

where substring(column_name, 1, 6) = 'macsea' and cast(substring(column_name, 7, 1000) as int) > 0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接