mysql - 如何在 mysql 和 vb.net 中使用带 IN 运算符的参数命令
问题描述
我需要在 WHERE 子句中使用 IN 运算符,所以我用我的 SQL 语句尝试了下一个代码,但它只给了我第一个数字的记录:
MyVar_AccID= "110,112,113"
Dim MyVar_SqlStr_Main As String = "SELECT
FatoraID,
FatoraRef,
FatoraCode,
FatoraDate,
(D.AccName) AS DName,
FatoraQuan,
CONCAT(CategoryName,' ',ProductName) AS ProdName,
FatoraSalePrice,
(C.AccName) AS CusName,
FatoraPurPrice,
(R.AccName) AS ResoName,
FatoraPalletQuan,
FatoraPalletPrice,
FatoraPurTotal,
FatoraCustomer,
FatoraDis,
FatoraPlus,
FatoraSaleTotal,
FatoraDriver,
FatoraCarNo,
FatoraDriverCost,
FatoraDriverCostTotal1,
FatoraDriverCostTotal2,
FatoraDriverPrice,
FatoraDriverPayStatus,
FatoraReso,
FatoraProduct,
FatoraDetails1,
FatoraDetails2,
FatoraDetails3,
(FatoraPalletQuan * FatoraPalletPrice) AS PalletTotalPrice
FROM tblfatora F
INNER JOIN tblproducts P ON
P.ProductID = F.FatoraProduct
INNER JOIN tblaccounts R ON
R.AccID = F.FatoraReso
INNER JOIN tblaccounts C ON
C.AccID = F.FatoraCustomer
LEFT JOIN tblaccounts D ON
D.AccID = F.FatoraDriver
INNER JOIN tblcategories CT ON
CT.CategoryID = P.ProductCategory
Where
(FatoraReso IN (@FatoraReso))
ORDER BY FatoraDate DESC"
xCmd = New MySqlCommand(MyVar_SqlStr_Main, Conn)
xCmd.Parameters.Add("@FatoraReso", MySqlDbType.VarChar).Value = MyVar_AccID
我也试过:
Where
(FatoraReso IN ("@FatoraReso"))
但没有给我结果,我该如何解决这个问题,请注意我不知道代码的数量,所以它可能会是(1,2,3,4,5)或更少或更多。
解决方案
您似乎想检查一个值是否属于逗号分隔的列表。你不能用 来做到这一点IN
,它需要一个值列表,而不是一个值的字符串。
通用解决方案使用字符串函数:
where concat(',', @fatorareso, ',') like concat('%,', fatorareso, ',%')
然而,在 MySQL 中,您可以使用方便的字符串函数find_in_set()
:
where find_in_set(fatorareso, @fatorareso)
推荐阅读
- r - R - 使用数据框列表中的列表
- python - 不能腌制/莳萝一个 keras 对象
- c++ - 在 64 位系统上打印指针
- python-3.x - 数据框——AttributeError:“NoneType”对象没有属性“iloc”
- linux-kernel - 在处理小任务时保存状态?
- javascript - WebSocket 构造函数是原生 Javascript 吗?
- java - 无法在Android中同一类中的方法之间传递值
- qt - QML,Qt 5.11:SwipeView 代替 SwipeDelegate
- python - 从在线流中记录的损坏的 AAC 文件
- python - Mutagen Python FileNotFoundError 处理