如何编写TSQL替换函数来替换第一个表达式?
我正在使用SSMS 2008,并且正在寻找一种根据以下逻辑替换记录的方法。我想从问号前的一列中列出所有内容。当前列数据示例:如何编写TSQL替换函数来替换第一个表达式?,sql,tsql,Sql,Tsql,我正在使用SSMS 2008,并且正在寻找一种根据以下逻辑替换记录的方法。我想从问号前的一列中列出所有内容。当前列数据示例: SUICIDAL? If yes, please describe HOMICIDAL? If yes, please describe the following PSYCHOTIC BEHAVIOR? If yes, please describe. If no then? ... 我想改为: SUICIDAL? HOMICIDAL? PSYCHOTIC BEHA
SUICIDAL? If yes, please describe
HOMICIDAL? If yes, please describe the following
PSYCHOTIC BEHAVIOR? If yes, please describe. If no then?
...
我想改为:
SUICIDAL?
HOMICIDAL?
PSYCHOTIC BEHAVIOR?
...
注意,它应该只包含第一个问号之前的所有内容,因此在第三条记录中,它应该只返回“精神病行为”,而不是所有以“then”结尾的内容
如何编写此代码?我在TSQL中尝试了以下表达式,但不起作用:
replace('?%',[test_details].[test_setup_details_caption],'?')
对于SELECT,只需使用
CASE
WHEN CHARINDEX('?', myCol) > 0
THEN LEFT(myCol, CHARINDEX('?', myCol)-1)
ELSE MyCol
END
对于SELECT,只需使用
CASE
WHEN CHARINDEX('?', myCol) > 0
THEN LEFT(myCol, CHARINDEX('?', myCol)-1)
ELSE MyCol
END
尝试:
尝试:
谢谢各位。我喜欢这个答案,因为它比较短。但是,我需要删除“-1”,而不是上面的内容。所以它是这样写的:选择左边(@x,CHARINDEX('?',@x)),谢谢大家。我喜欢这个答案,因为它比较短。但是,我需要删除“-1”,而不是上面的内容。所以它的内容是:选择左(@x,CHARINDEX('?',@x))
DECLARE @x varchar(100) = 'PSYCHOTIC BEHAVIOR? If yes, please describe. If no then?'
SELECT LEFT(@x,CHARINDEX('?',@x)-1)