我通过从excel中的一个表或另一个db中的表中复制和粘贴列来运行大量查询。唯一的问题是需要添加逗号,如果它是varchar字段,引号也是如此。
如果我想复制并粘贴一列来运行查询,有什么方法可以以正确的格式获取它?
前:
select * from table1 where columnName in ('row one',
'row two',
'row three',
'row four',
'row five')
答案 0 :(得分:0)
如果您希望从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/
答案 1 :(得分:0)
我创建了一个用户定义函数来构建逗号分隔列表。我有一个.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
答案 2 :(得分:0)
我的建议包括使用Replace()函数将所有选项卡(Char(9))转换为','然后将所有'换行符'(CHar(13))更改为','。然后你的结果是'Commafied and quoted'
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
答案 3 :(得分:0)
我做了类似的事情,也使用了“in”子句。
如果从excel复制,请首先使用连接函数在另一列中格式化数据。
因此,要向单元格A2添加逗号,例如=Concatenate(A2,",")
。将其复制到所有行。然后将列复制并粘贴到sql等中。