在SQL查询中的第一个字母上匹配文本字符串

时间:2012-02-28 14:47:49

标签: sql vb.net

示例代码:

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 & "

在这个例子中,textData是一个文本字符串,alpha是一个字母a到z或A到Z.

我不需要区分大小写的标准,但我只需要textData的第一个字母来匹配alpha。

我已经测试过LIKE比较器,它不会返回所有以alpha开头的记录。

最好的方法是什么?任何和所有帮助将不胜感激。

再次感谢,

3 个答案:

答案 0 :(得分:7)

LIKE运算符是您想要使用的运算符,但您必须使用%通配符,如下所示:

SELECT * FROM MyTable WHERE textData LIKE 'a%'

答案 1 :(得分:2)

SQL具有子字符串运算符SUBSTR()或SUBSTRING()

从tableName中选择*其中substr(textData)in('A','B','C',...);

答案 2 :(得分:0)

我无法添加其他帖子之一的评论,但我强烈要求出于这些原因使用参数化查询的必要性(您可以将with运算符的使用与通配符%一样包含在其他帖子中回答正确总结回答你的问题):

  1. 它可以保护您免于使用单引号出错,尤其是当用户输入包含它们的搜索字符串时 (它们会导致您的查询失败)。

  2. 它可以保护您免受SQL注入攻击。例如,用户能够在上面输入变量“alpha”的值 例如,他们可以输入类似的内容:

    '; DELETE FROM;

    如果您使用的用户拥有过多的数据库权限,他们可以 肆虐各种各样的破坏(或者他们可能会进入 他们无法访问的数据。)