我需要选择列中仅包含数字并以连字符结尾的位置
我正在运行SQL Server Management Studio v17.9.1
我尝试过:
select * from [table] where [column] like '[0-9]*-'
select * from [table] where [column] like '[0-9]{1,}-'
select * from [table] where [column] like '[0-9]{1,2}-'
这些工作都没有。表达式([0-9] *-)可在我运行过的任何正则表达式测试器中使用,SQL只是不喜欢它,我也找不到搜索到的其他变体。
答案 0 :(得分:1)
您可以过滤除最后一个字符以外的任何字符都不是数字,最后一个破折号的地方。 DATALENGTH / 2假定为NVARCHAR类型。如果您使用的是VARCHAR,则只需使用DATALENGTH
FalseClass#||
答案 1 :(得分:0)
您可以使用left()
和right()
函数,如下所示:
with [table]([column]) as
(
select '1234-' union all
select '{123]' union all
select '1234' union all
select '/1234-' union all
select 'test-' union all
select '1test-' union all
select '700-'
)
select *
from [table]
where left([column],len([column])-1) not like '%[^0-9]%'
and right([column],1)='-';
column
------
1234-
700-
答案 2 :(得分:0)
SQL Server不支持正则表达式-仅对like
功能进行了非常有限的扩展。
一种方法是:
where column like '%-' and
column not like '%[^0-9]%-'