仅获取具有特定条件的第一个字符

0qx6xfy6  于 2021-08-09  发布在  Java
关注(0)|答案(3)|浏览(296)

我正在使用sql server 2014。我有一些字符串值,即:

A BCD
QWE
B YUI
ZZZZ
N POU

但是,我只对字符串是单个字符且介于a-z之间的情况感兴趣。所以从上面来看,我想:

A
B
N

我知道我可以用 LIKE '[A-Z]% 但我只想在那里长度是1个字符-我该怎么做?

a0zr77ik

a0zr77ik1#

您可以使用:

SELECT LEFT(column_name, 1)
FROM table_name 
WHERE LTRIM(RTRIM(LEFT(column_name, 2))) LIKE '[A-Z]'

... 或者使用 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 :

SELECT LEFT(column_name, 1) 
FROM table_name 
WHERE column_name LIKE '[A-Z][^A-Z]%' OR column_name LIKE '[A-Z]'

dbfiddle.uk上的演示

ztigrdn8

ztigrdn82#

取列的前2个字符并右修剪它。
如果结果是单个字符 A-Z 然后退回:

select left(col, 1) result
from tablename
where rtrim(left(col, 2)) like '[A-Z]'

改变 col 列的名称。
请看演示。
结果:

> | result |
> | :----- |
> | A      |
> | B      |
> | N      |
rsaldnfx

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 |

相关问题