我通过从excel中的一个表或另一个数据库中的表中复制和粘贴一列来运行很多查询。唯一的问题是需要添加逗号,如果它是 varchar 字段,则需要添加引号。
如果我想复制并粘贴一个列来运行查询,那么以正确格式获取它的简单方法是什么?
前任:
select * from table1 where columnName in ('row one',
'row two',
'row three',
'row four',
'row five')
如果您希望从 Excel 数据中快速生成 SQL 语句,我可以建议:
在空单元格中写下以下公式:
="insert into table values('" &B3 &"','" & C3 & "','"&D3&"');"
其中 B3、C3、D3 指的是表格数据。
新单元格将包含正确值的 SQL 字符串。
资料来源:http ://chandoo.org/wp/2008/09/22/sql-insert-update-statements-from-csv-files/
我创建了一个用户定义函数来构建逗号分隔的列表。我有一个 .xla 文件,所以我总是可以使用它。
基本上,它允许我选择单列数据,并使用我选择的任何分隔符(默认为逗号)创建一个列表,并允许我指定是否应使用引号(为数值关闭这些)。
Function CommaList(DataRange As Range, Optional Seperator As String = ",", Optional Quotes As Boolean = True) As String
Dim iCellNum As Integer
Dim sTemp As String
If DataRange.Columns.Count > 1 Then
CommaList = "Select a Single Column"
Exit Function
End If
For iCellNum = 1 To DataRange.Cells.Count
If Quotes Then
sTemp = sTemp + "'" + DataRange.Cells(iCellNum, 1) + "'"
Else
sTemp = sTemp + DataRange.Cells(iCellNum, 1)
End If
If iCellNum < DataRange.Cells.Count Then
sTemp = sTemp + Seperator
End If
Next iCellNum
CommaList = sTemp
End Function
我做了类似的事情,也使用“in”子句。
如果您从 excel 中复制,请先使用 concatenate 函数在另一列中格式化您的数据。因此,要在单元格 A2 中添加一个逗号,例如=Concatenate(A2,",")
. 将其复制到所有行。然后将列复制并粘贴到sql等中。
我的建议是使用 Replace() 函数将所有制表符 (Char(9)) 转换为“,”,然后将所有“换行符”(CHAR(13)) 更改为“,”。然后你的结果是'Commafied andquoted'
Declare @String Varchar(max)
set @string =
'row one
row two
row three
row four'
set @string = '''' + replace ( replace(@string, Char(9) ,''' , ''' ),Char(13) ,''' , ''' )+ ''''
print @string
这使得结果“看起来”更漂亮:
set @string = replace (replace ( replace(@string, Char(9) ,''' , ''' ),Char(13) ,''' , ''' ), Char(10), '')
print @string