2013-08-21 112 views
1

我一直在運行很多查詢,通過複製和粘貼excel中的一個表中的列或從另一個數據庫中的表中運行。唯一的問題是,如果它是一個varchar字段,則需要添加逗號,引號也是如此。從excel的列上運行sql查詢

如果我想複製並粘貼一列來運行查詢,以正確的格式獲取它的簡單方法是什麼?

例如:

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

哪個數據庫?谷歌搜索「[數據庫名稱] CSV」有幫助嗎? – hd1

+0

您可以保存您的excel或只需要.csv格式的列,然後您可以使用任何編輯器(例如記事本++)添加引號 –

回答

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 
+0

我對SQL很陌生。我如何使用這個功能,我在哪裏放置它? – user2683873

+0

這不是SQL。這是一個vba函數,你可以在excel中運行。 –

0

我的建議涉及使用替換()函數將所有選項卡(CHAR(9))到 '' 然後改變所有的 '換行'(CHAR(13))到轉換 '' 。你的結果是那麼「Commafied,並引述」

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 
0

我做同樣的事情,也使用「的」條款。

如果您從excel複製,請使用concatenate函數首先在另一列中格式化數據。 所以爲單元格A2添加逗號,例如,=Concatenate(A2,",")。將所有行復制下來。然後複製並粘貼在SQL等colum