2009-07-22 22 views
2

我得到了數百個字符串的展望,Word或Excel列表,像這樣:如何以編程方式在字符串前後添加撇號並在中間添加逗號?

等 目前我關於這些運行存儲過程,在一個接一個的時尚。

我該如何以編程方式在字符串前後添加撇號並在中間添加逗號,如下所示:('','','','','','','')?

我想改變我的存儲過程以使用IN('','','')並且一次運行它們全部?

回答

4
DECLARE @STRING varchar(max) 
SELECT @STRING = '7864750A 7888801BZ 5189748C 48982572E 6936001F 7096235FG 3218833H' 

SELECT '(''' + REPLACE(@STRING,' ',''',''') + ''')' 

給出了這樣的結果:

('7864750A','7888801BZ','5189748C','48982572E','6936001F','7096235FG','3218833H') 
+0

Thamks 100萬Fretje! – Fet 2009-07-22 15:02:59

+0

不客氣;-) – fretje 2009-07-22 15:04:30

0

我只想用「','」來查找和替換「」的所有實例,然後在末尾添加「('」開頭和「')」「。

1

您可以編寫一個表值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') 

然後,你可以做一個連接或一個UPDATESELECTWHERE子句中的子查詢,如:

SELECT * 
FROM 
    SomeTable S 
    INNER JOIN dbo.SplitMyValues('7864750A 7888801BZ 5189748C 3218833H') X 
    ON X.Data = S.WhateverColumn 
1

一招,我從時間使用時間上的Excel數據...

假設有在列數據的若干行和B開始在第二排。 我將轉到單元格C2並在其中放置一個字符串公式。

="INSERT INTO MyTable(X, Y) SELECT '" & A2 & "', '" & B2 & "'" 

計算結果爲

INSERT INTO MyTable的(X,Y)選擇 '安勤', 'BValue'

然後我複製並粘貼下來的C柱...相對單元格引用照顧其餘的。

PS:小心零位!