Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何将字符串转换为不同的子字符串并将其放入变量中?_Mysql - Fatal编程技术网

Mysql 如何将字符串转换为不同的子字符串并将其放入变量中?

Mysql 如何将字符串转换为不同的子字符串并将其放入变量中?,mysql,Mysql,我有一个字符串变量,它是:“黑、白、黄”。问题是我在sql中使用Where IN子句,需要将字符串变量放入sql语句中。例如,从Products.color所在的产品中选择*() 如果我将字符串变量传递到sql语句中,它将变成Select*FROM Products WHERE Products.color IN(“黑、白、黄”) 但是,正确的语法应该是从Products.color所在的Products中选择*(“黑色”、“白色”、“黄色”) 如何克服此问题?您可以尝试使用在集合中查找: SE

我有一个字符串变量,它是:“黑、白、黄”。问题是我在sql中使用Where IN子句,需要将字符串变量放入sql语句中。例如,从Products.color所在的产品中选择*()

如果我将字符串变量传递到sql语句中,它将变成Select*FROM Products WHERE Products.color IN(“黑、白、黄”

但是,正确的语法应该是从Products.color所在的Products中选择*(“黑色”、“白色”、“黄色”


如何克服此问题?

您可以尝试使用
在集合中查找:

SELECT *
FROM Products
WHERE FIND_IN_SET(color, 'black,white,yellow') > 0;

请注意,CSV颜色字符串中没有空格。如果您的实际字符串中有空格,那么您可以首先在Go中删除它们,或者直接从MySQL查询中删除它们


而且,一般来说,不希望在SQL表中存储CSV数据<代码> FordPixIn SET//COD>让您暂时了解这个问题,但是长期您应该考虑将每个颜色存储在一个单独的记录中。

< P>我们可以使用下面的函数将逗号分隔的字符串变量(“黑色、白色、黄色”)读入XML文件并加载到临时表中。p>
drop table #Product_Converted
CREATE TABLE #Product_Converted
(
Product NVARCHAR(20) NULL
)


declare @product varchar(max) ='black, white, yellow'
DECLARE @product1 AS XML


DECLARE @Delimiter AS CHAR(1) =','

SET @Product1 = CAST(('<X>'+REPLACE(@Product ,@Delimiter ,'</X><X>')+'</X>') AS XML)

--Get all comma separated state values to rows of a table

INSERT INTO #Product_Converted
SELECT N.value('.', 'VARCHAR(20)') AS ID FROM @Product1.nodes('X') AS T(N)

select * from #Product_Converted
Select * FROM Products WHERE Products.color IN (select product from #Product_Converted)