代码之家  ›  专栏  ›  技术社区  ›  not_ur_avg_cookie

如何对一个或另一个角色使用Charindex

  •  0
  • not_ur_avg_cookie  · 技术社区  · 6 年前

    我有一个字符串,其中有一组数字,但它在字符串的中心某处包含一个字母。这封信可以是“A”或“B”。我试图用Charindex()函数找出这个字母的位置。但是,当您有两个搜索参数时,它不起作用:

    select  charindex('[A,B]','190118A3700000')
    

    我尝试了一个范围和通配符,但没有成功。所以我想把这两个独立的查询合并成一个:

    select  charindex('A','190118A3700000')
    select  charindex('B','190118A3700000')
    

    有人知道怎么做吗?

    非常感谢。

    2 回复  |  直到 6 年前
        1
  •  5
  •   Gordon Linoff    6 年前

    使用 patindex() :

    select patindex('%[A,B]%', '190118A3700000')
    

    或者,如果您想要第一个非数字:

    select patindex('%[^0-9]%', '190118A3700000')
    

    Here 是db<>不停摆弄

    charindex() 不懂通配符。

        2
  •  3
  •   Kathmandude    6 年前

    如果 charindex 找不到那个字符,它返回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;
    

    DEMO

    推荐文章