从excel对列运行sql查询

时间:2013-08-21 16:46:48

标签: sql excel

我通过从excel中的一个表或另一个db中的表中复制和粘贴列来运行大量查询。唯一的问题是需要添加逗号,如果它是varchar字段,引号也是如此。

如果我想复制并粘贴一列来运行查询,有什么方法可以以正确的格式获取它?

前:

 select * from table1 where columnName in ('row one',
'row two',
'row three',
'row four',
'row five')

4 个答案:

答案 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等中。