我正在使用sql server 2014。我有一些字符串值,即:
A BCD QWE B YUI ZZZZ N POU
但是,我只对字符串是单个字符且介于a-z之间的情况感兴趣。所以从上面来看,我想:
A B N
我知道我可以用 LIKE '[A-Z]% 但我只想在那里长度是1个字符-我该怎么做?
LIKE '[A-Z]%
a0zr77ik1#
您可以使用:
SELECT LEFT(column_name, 1) FROM table_name WHERE LTRIM(RTRIM(LEFT(column_name, 2))) LIKE '[A-Z]'
... 或者使用 PATINDEX :
PATINDEX
SELECT LEFT(column_name, 1) FROM table_name WHERE PATINDEX('[A-Z][^A-Z]%', column_name) > 0 OR PATINDEX('[A-Z]', column_name) > 0
... 或者使用 LIKE :
LIKE
SELECT LEFT(column_name, 1) FROM table_name WHERE column_name LIKE '[A-Z][^A-Z]%' OR column_name LIKE '[A-Z]'
dbfiddle.uk上的演示
ztigrdn82#
取列的前2个字符并右修剪它。如果结果是单个字符 A-Z 然后退回:
A-Z
select left(col, 1) result from tablename where rtrim(left(col, 2)) like '[A-Z]'
改变 col 列的名称。请看演示。结果:
col
> | result | > | :----- | > | A | > | B | > | N |
rsaldnfx3#
sql小提琴ms sql server 2017架构设置:
CREATE TABLE tablename ([col] varchar(5)) ; INSERT INTO tablename ([col]) VALUES ('A BCD'), ('QWE'), ('B YUI'), ('ZZZZ'), ('N POU') ;
查询1:
select left(col, 1) result from tablename WHERE charindex(' ', col, 2)<>0
结果:
| result | |--------| | A | | B | | N |
3条答案
按热度按时间a0zr77ik1#
您可以使用:
... 或者使用
PATINDEX
:... 或者使用
LIKE
:dbfiddle.uk上的演示
ztigrdn82#
取列的前2个字符并右修剪它。
如果结果是单个字符
A-Z
然后退回:改变
col
列的名称。请看演示。
结果:
rsaldnfx3#
sql小提琴
ms sql server 2017架构设置:
查询1:
结果: