我得到了數百個字符串的展望,Word或Excel列表,像這樣:如何以編程方式在字符串前後添加撇號並在中間添加逗號?
等 目前我關於這些運行存儲過程,在一個接一個的時尚。
我該如何以編程方式在字符串前後添加撇號並在中間添加逗號,如下所示:('','','','','','','')?
我想改變我的存儲過程以使用IN('','','')並且一次運行它們全部?
我得到了數百個字符串的展望,Word或Excel列表,像這樣:如何以編程方式在字符串前後添加撇號並在中間添加逗號?
等 目前我關於這些運行存儲過程,在一個接一個的時尚。
我該如何以編程方式在字符串前後添加撇號並在中間添加逗號,如下所示:('','','','','','','')?
我想改變我的存儲過程以使用IN('','','')並且一次運行它們全部?
DECLARE @STRING varchar(max)
SELECT @STRING = '7864750A 7888801BZ 5189748C 48982572E 6936001F 7096235FG 3218833H'
SELECT '(''' + REPLACE(@STRING,' ',''',''') + ''')'
給出了這樣的結果:
('7864750A','7888801BZ','5189748C','48982572E','6936001F','7096235FG','3218833H')
我只想用「','」來查找和替換「」的所有實例,然後在末尾添加「('」開頭和「')」「。
您可以編寫一個表值UDF,它將字符串作爲輸入並將表項的不同行返回。像這樣的東西(而不是在世界上最有效的事情...):
CREATE FUNCTION [dbo].[SplitMyValues]
(
@Input VARCHAR(MAX)
)
RETURNS @Results TABLE
(
Data VARCHAR(MAX)
)
AS
BEGIN
DECLARE @Where INT
DECLARE @Length INT
DECLARE @Next INT
SET @Where = 0
SET @Length = LEN(@Input)
WHILE (@Where < @Length)
BEGIN
SET @Next = CHARINDEX(' ', @Input, @Where)
IF (@Next > 0)
BEGIN
INSERT INTO @Results VALUES (SUBSTRING(@Input, @Where, @Next - @Where))
SET @Where = @Next + 1
END
ELSE
BEGIN
INSERT INTO @Results VALUES (SUBSTRING(@Input, @Where, LEN(@Input)))
SET @Where = @Length
END
END
RETURN
END
要查看輸出,你可以運行這個命令:
SELECT *
FROM
dbo.SplitMyValues('7864750A 7888801BZ 5189748C 3218833H')
然後,你可以做一個連接或一個UPDATE
或SELECT
的WHERE
子句中的子查詢,如:
SELECT *
FROM
SomeTable S
INNER JOIN dbo.SplitMyValues('7864750A 7888801BZ 5189748C 3218833H') X
ON X.Data = S.WhateverColumn
一招,我從時間使用時間上的Excel數據...
假設有在列數據的若干行和B開始在第二排。 我將轉到單元格C2並在其中放置一個字符串公式。
="INSERT INTO MyTable(X, Y) SELECT '" & A2 & "', '" & B2 & "'"
計算結果爲
INSERT INTO MyTable的(X,Y)選擇 '安勤', 'BValue'
然後我複製並粘貼下來的C柱...相對單元格引用照顧其餘的。
PS:小心零位!
Thamks 100萬Fretje! – Fet 2009-07-22 15:02:59
不客氣;-) – fretje 2009-07-22 15:04:30