如何在T-SQL中查找字符序列中第一个出现的字符

如何在T-SQL中查找字符序列中第一个出现的字符,sql,sql-server,tsql,Sql,Sql Server,Tsql,我想写一个简单的查询来查找第一个出现的“,”或“;”在T-SQL中的字符串中。有什么简单的方法可以做到这一点吗 在其他数据库中,我会使用诸如[,;]之类的正则表达式,但这些在t-SQL中不可用 我能想到的唯一解决方案是有一长串嵌套if。。其他声明,但这不具吸引力。试试PATINDEX select patindex('%,%', my_column) from my_table 我对T-SQL一无所知,但看看微软的文档,它似乎会发现单个字符(或者实际上是任何字符串)的第一次出现,你可以调用它两

我想写一个简单的查询来查找第一个出现的“,”或“;”在T-SQL中的字符串中。有什么简单的方法可以做到这一点吗

在其他数据库中,我会使用诸如[,;]之类的正则表达式,但这些在t-SQL中不可用

我能想到的唯一解决方案是有一长串嵌套if。。其他声明,但这不具吸引力。

试试PATINDEX

select patindex('%,%', my_column)
from my_table

我对T-SQL一无所知,但看看微软的文档,它似乎会发现单个字符(或者实际上是任何字符串)的第一次出现,你可以调用它两次(一次调用
,一次调用
),看看哪个先出现。请参阅:。

'%[;,]%'
将捕获这两个
,我相信:谢谢,“%[;,]%”很有魅力。我已经阅读了PATINDEX的文档,但从那次阅读中我认为这不可行。请您知道,PATINDEX中的第一个参数是正则表达式。
PATINDEX
中的第一个参数不是正则表达式,该线程中的第一条注释指出了这一点。有很多东西可以用正则表达式来表达,但不能用
PATINDEX
能够理解的模式来表达。Gareth,这就是我试图避免做的事情。因为在分别搜索每个字符后,你会得到一个巨大的嵌套if语句,很难理解和维护。我知道你得到了一个满意的答案——但是如果你想满足我的好奇心,你能解释一下为什么你会使用
CHARINDEX
得到一个巨大的嵌套if语句,但不是,例如。,是否使用PATINDEX
?(例如,您是否真的设想了一种情况,即您正在寻找的角色远远超过2个?)