Sql server TSQL,检查comman后面是否有用于字符串的空格

Sql server TSQL,检查comman后面是否有用于字符串的空格,sql-server,tsql,Sql Server,Tsql,我有一个字符串需要输入到函数中/这都是关于aka字母化名称的,格式为Dow,John W,大小写精确。在我的例子中,我需要为我的函数在逗号后加空格,而有些字符串没有空格,如何以最有效的方式来做呢?我尝试使用range[]执行以下操作,但不起作用。 基本上我需要逻辑:如果逗号后没有空格,那么插入空格,我不想触及函数本身,因为它是遗留的东西 DECLARE @inpstring VARCHAR(100) = 'DOW,JohN W' SELECT Replace(@inpstring,'[A-

我有一个字符串需要输入到函数中/这都是关于aka字母化名称的,格式为
Dow,John W
,大小写精确。在我的例子中,我需要为我的函数在逗号后加空格,而有些字符串没有空格,如何以最有效的方式来做呢?我尝试使用range[]执行以下操作,但不起作用。 基本上我需要逻辑:如果逗号后没有空格,那么插入空格,我不想触及函数本身,因为它是遗留的东西

DECLARE @inpstring VARCHAR(100) = 'DOW,JohN   W'
SELECT  Replace(@inpstring,'[A-Z],[A-Z]','[A-Z], [A-Z]')
-- s'be 'Dow, John   W'
德克萨斯州
M

假设字符串中只有一个
,您可以使用:

DECLARE @inpstring VARCHAR(100) = 'DOW,JohN   W'
SELECT CASE 
        WHEN PATINDEX('%,[A-Z]%', @inpstring) > 0 THEN Replace(@inpstring,',',', ')
        ELSE @inpstring
       END

对于多个逗号:

DECLARE @inpstring VARCHAR(100) = 'A,B,C, D'
SELECT @inpstring = 
    CASE 
      WHEN PATINDEX('%,[A-Z]%', @inpstring) > 0 
      THEN REPLACE(Replace(@inpstring,',',', '), ',  ', ', ')
      ELSE @inpstring
    END

PRINT(@inpstring);

您是否只希望看到一个逗号?或者,关于空格的规则应该只适用于第一个逗号吗?