2012-02-28 11 views
3

示例代碼:一致的文字在SQL查詢

Dim sql As String = "SELECT * FROM " + tblName + " WHERE needsTranslation = 'True' AND dataText LIKE " & "'" & alpha & "%" & "'" & " ORDER BY dataText;" 
da = New SqlDataAdapter(sql, strConnection) 

OP: 我想創建一個返回所有記錄在一個字符串的第一個字母我的變量相匹配的SQL查詢。我在vb.net頁面後面的ASP.net代碼中編寫了這個代碼。

SELECT * FROM " + tblName + " WHERE textData = ' & alpha & " 

在這種exmample的TextData是文本和α的一個字符串是通過Z.

單個字母a到z或A

我不需要的標準來區分大小寫,但我需要只有textData的第一個字母與alpha匹配。

我已經測試LIKE比較,並沒有返回阿爾法開頭的所有記錄。

這樣做的最好方法是什麼?任何和所有的幫助將不勝感激。再次

感謝,

+2

請提供LIKE沒有工作的SQL,因爲這正是應該工作的 – kaj 2012-02-28 14:50:59

+0

你能用'LIKE'告訴我們你的查詢沒有用嗎? – Ryan 2012-02-28 14:51:37

+0

你能否提供一些查詢應該匹配的示例字符串以及一些不匹配的示例? – pete 2012-02-28 14:54:06

回答

7

LIKE運算符是你想要幹什麼用的,但你必須使用%通配符,像這樣:

SELECT * FROM MyTable WHERE textData LIKE 'a%' 
+0

我開始使用Substring操作符進行測試,我將切換回LIKE並很快更新分析。感謝您的回覆。 – htm11h 2012-02-28 15:03:01

+0

我想弄清楚如何在VB.net中編寫代碼 – htm11h 2012-02-28 15:04:14

+0

在OP中更新的當前代碼返回alpha變量值的無效列名稱。 – htm11h 2012-02-28 15:10:07

2

SQL有子字符串操作SUBSTR( )或SUBSTRING()

SELECT * FROM TABLENAME其中SUBSTR(的TextData)在( 'A', 'B', 'C',...);

0

我不能添加到評論的其他職位,但我會強烈第二個需要使用參數化查詢這些原因(可以包括像運營商的使用與通配符%像對方回答正確總結回答你的問題):

  1. 它會保護你進行單引號的錯誤,特別是如果用戶輸入包括他們 (它們會導致您的查詢失敗)搜索字符串。

  2. 它可以保護你免受SQL注入攻擊。例如,用戶能夠在上述 示例中輸入變量「alpha」的值,他們可以輸入如下內容:

    ';刪除;

    如果您使用的用戶擁有過多的數據庫權限,他們可能會造成各種嚴重破壞(或者他們可能會訪問他們不應訪問的數據, )。

+0

瞭解,但在這種情況下,alpha的唯一可用值是硬編碼的字母字符。 – htm11h 2012-02-29 15:56:01