Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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 如何像支票一样使用6马克?_Mysql - Fatal编程技术网

Mysql 如何像支票一样使用6马克?

Mysql 如何像支票一样使用6马克?,mysql,Mysql,我有一个数据库表products,其中包含一个名为store_id的列,其中包括: 11001100 11111111 11000000 11111011 6例如,如果字符等于1,则存储中的是产品 如何像只使用复选标记6一样使用?您可以使用它从字符串中提取字符 要选择store 6中的所有产品,请使用: SELECT * FROM Product p WHERE SUBSTRING(p.Store_Id, 6, 1) = '1' 或者更具语言性的语法: SELECT * FROM Produ

我有一个数据库表products,其中包含一个名为store_id的列,其中包括:

11001100
11111111
11000000
11111011
6例如,如果字符等于1,则存储中的是产品

如何像只使用复选标记6一样使用?

您可以使用它从字符串中提取字符

要选择store 6中的所有产品,请使用:

SELECT * FROM Product p
WHERE SUBSTRING(p.Store_Id, 6, 1) = '1'
或者更具语言性的语法:

SELECT * FROM Product p
WHERE SUBSTRING(p.Store_Id FROM 6 FOR 1) = '1'
也就是说,这不是很有效。更好的方法是创建一个单独的表来将产品链接到商店,例如一个表
StoreProduct
,该表具有产品Id和(真实)商店Id。然后,您可以编写如下查询:

SELECT * FROM Product p
INNER JOIN StoreProduct sp ON sp.Product_Id = p.ProductId
WHERE sp.Store_Id = 6 /* The actual id of the store */
SELECT *
FROM myTable
WHERE SUBSTRING(store_id, 6, 1) = '1';
此查询看起来更复杂,但使用适当的索引更有效。

您可以使用该函数获取字符串的特定部分。您可以指定起始索引以及要检索的字符长度。也就是说,如果要查找字符串中的第六个字符,请尝试以下操作:

SUBSTRING(store_id, 6, 1)
在您的查询中,它将如下所示:

SELECT * FROM Product p
INNER JOIN StoreProduct sp ON sp.Product_Id = p.ProductId
WHERE sp.Store_Id = 6 /* The actual id of the store */
SELECT *
FROM myTable
WHERE SUBSTRING(store_id, 6, 1) = '1';
这里有一个例子


如果必须使用
LIKE
操作符作为标题和问题的建议,则需要知道下划线与MySQL中的单个字符匹配。知道了这一点,您可以查找具有5个起始字符的字符串,一个1,之后谁会在意呢。百分比符号用于检查0个或更多字符:

SELECT *
FROM myTable
WHERE store_id LIKE '_____1%';

你是说
store\u id
是一个varchar数据类型吗?你说只勾选6分是什么意思?你是说
存储\u id
中的第6个字符吗?所以没有人认为这不清楚吗?我相信下划线是与1个字符匹配的,所以它可能是
“\uuuuuuuuuuuuuuuuuuuu1%”
,但我不确定这是否是你想要的。如果你想检查特定字符,请使用
SUBSTR()
,不像“有10种人……”。。那些知道二进制代码的人,那些不知道二进制代码的人,还有那些没想到这个笑话会出现在base 3中的人。”@Strawberry@Kwiatkowski如果你不介意我问的话,你用了哪种解决方案?子字符串还是类似的?