示例代码:
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开头的记录。
最好的方法是什么?任何和所有帮助将不胜感激。
再次感谢,
答案 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运算符的使用与通配符%一样包含在其他帖子中回答正确总结回答你的问题):
它可以保护您免于使用单引号出错,尤其是当用户输入包含它们的搜索字符串时 (它们会导致您的查询失败)。
它可以保护您免受SQL注入攻击。例如,用户能够在上面输入变量“alpha”的值 例如,他们可以输入类似的内容:
'; DELETE FROM;
如果您使用的用户拥有过多的数据库权限,他们可以 肆虐各种各样的破坏(或者他们可能会进入 他们无法访问的数据。)