首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >^的通配符用法

^的通配符用法
EN

Stack Overflow用户
提问于 2021-03-21 19:18:35
回答 2查看 31关注 0票数 0

我想验证一个字段,

如果字段仅为12345,则不返回

  1. ,如果字段为1234-1或-123331,则不返回
  2. ;如果字段为a12341,则不返回
  3. ;如果字段为a 1234-或code 233-返回1.

<代码>G29,则返回1

  1. >

基本上,只要检查这个字段中是否有一个非数字字符,但是允许破折号在其中。

以下是我的想法:

代码语言:javascript
复制
select 1
from dbo.random.field
where ISNUMBERIC(field)=0 and field not like '%-%'

使用它来检查是否有字母,然后检查是否有-,但是我的测试用例总是这样:

Failed

  • 12345-
  1. 12345通行证
  2. 12345a

Pass

  1. 1234a- Pass,但这应该失败。

那我在这里做错什么了?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-03-21 19:21:04

让我假设您使用的是基于isnumeric()的Server。您可以使用like

代码语言:javascript
复制
where field like 'a%[0-9]%' and
      field not like 'a%[^-0-9]%'

第一个检查列是否以'a'开头,并且至少有一个数字。第二次检查在'a'之后没有非数字或非连字符.

您可以使用a (假设大小写不敏感)将[a-z]概括为任何字母,也可以将其推广到使用[^0-9]的任何非数字字母。

编辑:

对于你修改过的问题,你似乎只是想要一封信。您可以使用:

代码语言:javascript
复制
select *
from (values ('12345'), ('1234-1'), ('1234-1'), ('a12341'), ('34j123'), ('99933hh'), ('a1234-'), ('sodf233-')) v(field)
where field like '%[^-0-9]%';
票数 0
EN

Stack Overflow用户

发布于 2021-03-21 19:34:40

所以这就是我最后所做的

代码语言:javascript
复制
like '%[^-0-9]%'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66736544

复制
相关文章

相似问题

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