sql - 无论如何在搜索栏中使用逗号在 SQL Query 中显示多行
问题描述
所以,我创建了一个搜索栏并连接到数据库。一切都很好,现在我想尝试创建一个可以在搜索栏中检测多个关键字的搜索栏。下面是我的数据库示例:
+------+--------------+
| Bil. | ID | Product |
+------+--------------+
| 1 | G1 | M1 Plus |
| 2 | G2 | M1 Plus |
| 3 | G3 | Omega 3 |
+------+--------------+
我想使用逗号作为分隔符来检测搜索栏中的关键字,例如当我搜索“G1,G2”时,它将显示这两个行。
我尝试使用此代码
SELECT ID FROM Egg WHERE (',' + ID + ',') OR (ID + ',') OR (',' + ID) OR (ID) LIKE '" & @ID_search & "';"
有什么我需要改进的吗?
解决方案
您可以在逗号上拆分输入,然后根据这些部分构造您的 SQL,例如
Dim keywords = TextBox1.Text.Split(","c)
Dim criteria As New List(Of String)
Dim command As New SqlCommand
For i = 0 To keywords.GetUpperBound(0)
Dim keyword = keywords(i)
Dim parameterName = $"@SomeColumn{i}"
criteria.Add($"SomeColumn LIKE {parameterName}")
command.Parameters.Add(parameterName, SqlDbType.VarChar, 50).Value = $"%{keyword}%"
Next
Dim sql = $"SELECT * FROM SomeTable WHERE {String.Join(" OR ", criteria)}"
command.CommandText = sql
如果您输入G1,则将产生:
SELECT * FROM SomeTable WHERE SomeColumn LIKE @SomeColumn0
如果您输入G1,G2,G3那么将产生:
SELECT * FROM SomeTable WHERE SomeColumn LIKE @SomeColumn0 OR SomeColumn LIKE @SomeColumn1 OR SomeColumn LIKE @SomeColumn2
推荐阅读
- java - 如何在itext 7中将html转换为pdf时仅获得某些页面的横向?
- c - 在乘以 uint64 * uint64 时获取 uint64 超过其限制的次数
- angular - Angular Mat 对话框单元测试:This.dialogref.updatesize 不是函数
- ios - iOS 13 页面上的圆角
- python - ModuleNotFoundError:没有名为“_sysconfigdata_m_darwin_darwin”的模块
- perforce - 在与取消搁置存在冲突后,perforce 是否会安排解决?
- r - 在R中对具有指定逻辑的列进行分组
- reactjs - 尝试使用 react-redux 调度操作时,“PropsWithChildren”类型上不存在 Prop
- python - 用户输入表单字段后如何运行python函数
- python - 从数组中查找 3 个连续缺失的整数