如何为一个或另一个字符使用 Charindex
How to use Charindex for one or the other character
我有一个包含一堆数字的字符串,但它在字符串中间某处包含一个字母。此字母可以是 'A' 或 'B'。我试图用 Charindex() 函数找出这封信的位置。但是,当您有两个搜索参数时它不起作用:
select charindex('[A,B]','190118A3700000')
我尝试使用范围和通配符,但没有用。所以我想要的是将这两个单独的查询合并为一个:
select charindex('A','190118A3700000')
select charindex('B','190118A3700000')
有人知道怎么做吗?
谢谢!!!
使用patindex()
:
select patindex('%[A,B]%', '190118A3700000')
或者,如果您想要第一个非数字:
select patindex('%[^0-9]%', '190118A3700000')
Here 是一个 db<>fiddle.
charindex()
不懂通配符。
如果 charindex
没有找到那个字符,它 returns 0 所以你需要做的就是
select col, charindex('A', col) + charindex('B', col) as position
from your_table;
另一种选择
select col, charindex('A', replace(col, 'B', 'A')) as position
from your_table;
我有一个包含一堆数字的字符串,但它在字符串中间某处包含一个字母。此字母可以是 'A' 或 'B'。我试图用 Charindex() 函数找出这封信的位置。但是,当您有两个搜索参数时它不起作用:
select charindex('[A,B]','190118A3700000')
我尝试使用范围和通配符,但没有用。所以我想要的是将这两个单独的查询合并为一个:
select charindex('A','190118A3700000')
select charindex('B','190118A3700000')
有人知道怎么做吗?
谢谢!!!
使用patindex()
:
select patindex('%[A,B]%', '190118A3700000')
或者,如果您想要第一个非数字:
select patindex('%[^0-9]%', '190118A3700000')
Here 是一个 db<>fiddle.
charindex()
不懂通配符。
如果 charindex
没有找到那个字符,它 returns 0 所以你需要做的就是
select col, charindex('A', col) + charindex('B', col) as position
from your_table;
另一种选择
select col, charindex('A', replace(col, 'B', 'A')) as position
from your_table;