我有這樣的:如何爲SQL Server中的字符串中的每個字符添加逗號和單引號?
declare @data varchar = 'UI'
我需要解決這一問題,以便它會用「IN」語句工作。
'UI' => 'U','I'
很難完成這項工作。任何人都在意幫忙嗎?
謝謝!
我有這樣的:如何爲SQL Server中的字符串中的每個字符添加逗號和單引號?
declare @data varchar = 'UI'
我需要解決這一問題,以便它會用「IN」語句工作。
'UI' => 'U','I'
很難完成這項工作。任何人都在意幫忙嗎?
謝謝!
可以在演唱會使用的ad-hoc符合表的東西()和XML。
例
declare @data varchar(max) = 'UI'
Select S = Stuff((Select ',' +S
From (
Select S=''''+substring(@data,N,1)+''''
From (Select Top (Len(@data)) N=Row_Number() Over (Order By (Select null)) From master..spt_values) N
) B1
For XML Path ('')),1,1,'')
返回
'U','I'
編輯如果你是開放的UDF
Select S = Stuff((Select ',''' +RetVal + ''''
From (Select * From [dbo].[udf-Str-Parse-Char](@data)) A
For XML Path ('')),1,1,'')
的UDF
CREATE FUNCTION [dbo].[udf-Str-Parse-Char] (@String varchar(max))
Returns Table
As
Return (
with cte1(N) As (Select 1 From (Values(1),(1),(1),(1),(1),(1),(1),(1),(1),(1)) N(N)),
cte2(N) As (Select Top (IsNull(DataLength(@String),0)) Row_Number() over (Order By (Select NULL)) From cte1 a,cte1 b,cte1 c,cte1 d,cte1 e,cte1 f)
Select RetSeq=N
,RetVal=Substring(@String,N,1)
From cte2
)
--Max 1 Million Observations
--Select * from [dbo].[udf-Str-Parse-Char]('this is a string')
謝謝,約翰!我選擇了你的第一個選擇。成功了! –
簡單的方法:
declare @data varchar = 'UI'
select '''' + @data + ''''
在聲明中這樣寫:
DECLARE @this_Command varchar(1000)
set @this_Command = 'select * from yourtable where column1 in(''' + @data + ''')'
exec(@this_Command);
從@JohnCappelletti答案將竭誠爲您服務很好,但除非我錯過了一些東西,我不能幫忙,但覺得有更簡單的方法可用。
declare @data varchar = 'UI'
Select * from t
where charindex(field,@data)>0
這where
子句將計算爲true
如果field
匹配所有的字符在@data
參數。有一個邊緣的情況下,可能導致的問題:如果field
並不總是單個字符則CHARINDEX 能給你這將是可以避免已通過@ JohnCappelletti的回答多字符匹配。應該說是一個相關的關注,你可以這樣做:
Select * from t
where charindex(field,@data)>0 AND
len(field)=1
如果你知道@data
將不包含任何「特殊」字符(如]
或^
),那麼你可以使用和like
會做它如下:
Select * from t
where field like '[' + @data + ']'
如果field
匹配所有的字符在@data
參數的like
將評估爲true
。如果你想這樣做,而且你(或可能)在那裏有特殊字符,你需要首先逃避那些角色。
鑑於這種情況,我通常選擇的charindex
方法。like
也往往效率低於其他功能,雖然其他功能比我更瞭解它是否屬於這種情況。
「LIKE」問題之一是您必須確定「@ data」不包含任何意外。例如'@data ='^ abc''可能會引起一些意外(就像任何包含''''的東西)。 –
謝謝@Damien_The_Unbeliever。我將包括一個這樣的筆記,並忘記。我已經更新了我的答案。 –
'LIKE'不會有效嗎? –
不幸的是沒有。必須是一個陳述 –
沒時間寫今晚,但這應該讓你在正確的方向前進:http://stackoverflow.com/questions/30782744/split-a-string-with-no-delimiters-into - 列 –