我在Outlook,Word或Excel中获得了数百个字符串的列表,如下所示:
等。 目前,我以逐一的方式对每个存储过程运行。
我怎样才能以编程方式在字符串前后添加撇号并在其间添加逗号,如下所示:('','','','','','','')?
我想更改我的存储过程以使用IN('','','')并立即运行所有这些过程?
答案 0 :(得分:4)
DECLARE @STRING varchar(max)
SELECT @STRING = '7864750A 7888801BZ 5189748C 48982572E 6936001F 7096235FG 3218833H'
SELECT '(''' + REPLACE(@STRING,' ',''',''') + ''')'
给出了这个结果:
('7864750A','7888801BZ','5189748C','48982572E','6936001F','7096235FG','3218833H')
答案 1 :(得分: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')
然后,您可以在WHERE
或UPDATE
的{{1}}子句中执行加入或子查询,例如:
SELECT
答案 2 :(得分:1)
我不时在excel数据上使用的一个技巧......
假设从第2行开始的A列和B列中有多行数据。 我将转到C2单元格并在其中放置一个字符串公式。
="INSERT INTO MyTable(X, Y) SELECT '" & A2 & "', '" & B2 & "'"
评估为
INSERT INTO MyTable(X,Y)SELECT'AValue','BValue'
然后我将其复制并粘贴到C列...相关的单元格引用处理其余部分。
PS:注意空值!
答案 3 :(得分:0)
我只是使用find并将所有“”的实例替换为“','”,然后在结尾添加“('”在开头和“')”。