gpt4 book ai didi

sql - 从字符串中删除最终的 "OR"

转载 作者:行者123 更新时间:2023-12-04 22:40:21 26 4
gpt4 key购买 nike

我正在 VB.net 中构建 SQL 查询并编写了一个例程来动态执行此操作。

我想在 where 子句中包含一个数组(大小未知)中的每个项目,如下所示:

Dim person(10) as String
Dim strSQL, strWhereClause as String
person(0) = "John"
person(1) = "Steve"
'...

For i = 0 To UBound(menuNames)
strWhereClause &= "[name] = '" & person(i) & "' OR "
Next

strSQL= "SELECT * FROM [customers] WHERE " & strWhereClause

这里的问题是有一个额外的 " OR "在末尾。有没有一种巧妙的方法来消除它?或者也许是一起解决问题的更好方法。 (我认为 string.join 在这种情况下不起作用,因为数组项前后都有文本。)

编辑:手动删除最后三个字符,如下所示: strWhereClause = Left(strWhereClause, strWhereClause.Length - 3)很好,除了它不处理空字符串。毕竟,我不知道我的数组中有多少元素。

最佳答案

你不应该像你那样做,即使你 100% 确定数组中存储了哪些内容,这仍然是一个坏习惯。相反,您应该熟悉使用 parameterized queries .

未经编译测试:

var sb = new StringBuilder();
sb.Append("SELECT * FROM [customers] WHERE ");

for (int i = 0; i < person.Length; ++i)
{
var param = string.Format("NAME{0}", i);
sb.Append(string.Format("[NAME] = @{0}{1}", param, i < person.Length - 1 ? " OR " : string.Empty));
command.Parameters.AddWithValue(param, person[i]);
}

var sql = sb.ToString();

假设您的 SqlCommand 是 command .
对不起 C#,但我的 VB 太生疏了,我希望你明白这一点。 ;)

关于sql - 从字符串中删除最终的 "OR",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6410384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com