就像SQL命令中的一样,没有按预期工作?

就像SQL命令中的一样,没有按预期工作?,sql,Sql,那是我的数据库表 -------------------------------- | Product name | category | | Item 1 | 14*#*2*#*1 | | Item 2 | 1*#*5*#*14 | | Item 3 | 2*#*21*#*5 | | Item 4 | 5*#*51*#*25 | | Item 5 | 100*#*212*#*25| | Item

那是我的数据库表

--------------------------------
| Product name |    category   |
| Item 1       |   14*#*2*#*1  | 
| Item 2       |   1*#*5*#*14  | 
| Item 3       |   2*#*21*#*5  |
| Item 4       |   5*#*51*#*25 | 
| Item 5       | 100*#*212*#*25| 
| Item 6       | 212*#*55*#*651|
---------------------------------
当我们运行我的SQL查询时

SELECT * FROM product WHERE category LIKE '%1%'
它给出以下输出:

--------------------------------
| Product name | category      |
| Item 1       | 14*#*2*#*1    | 
| Item 2       | 1*#*5*#*14    |
| Item 3       | 2*#*21*#*5    |
| Item 4       | 5*#*51*#*25   |
| Item 5       |100*#*212*#*25 |
| Item 6       |212*#*55*#*651 |
--------------------------------
但我希望得到以下结果:

-------------------------------
| Product name  |   category  |
| Item 1        | 14*#*2*#*1  |
| Item 2        | 1*#*5*#*14  |
-------------------------------

您可以这样做:

SELECT * 
FROM   product 
WHERE  category LIKE '1*#*%'
    or category LIKE '%*#*1*#*%'
    or category LIKE '%*#*1%'
SELECT p.*
FROM product p
WHERE '*#*' || p.category || '*#*' LIKE '%*#*1*#*%';

但不要像这样存储数据,每行存储一个类别。查询将执行得更好,使一切变得更容易。

您可以这样做:

SELECT * 
FROM   product 
WHERE  category LIKE '1*#*%'
    or category LIKE '%*#*1*#*%'
    or category LIKE '%*#*1%'
SELECT p.*
FROM product p
WHERE '*#*' || p.category || '*#*' LIKE '%*#*1*#*%';

但不要像这样存储数据,每行存储一个类别。查询将执行得更好,使一切变得更容易。

这是一个可怕的数据结构,如果可以的话,您应该修复它。SQL有一种很好的存储事物列表的方法。它被称为表,而不是列

有时候,我们会被其他人的非常非常非常糟糕的决定所困扰。如果是这种情况,您可以这样使用:

SELECT * 
FROM   product 
WHERE  category LIKE '1*#*%'
    or category LIKE '%*#*1*#*%'
    or category LIKE '%*#*1%'
SELECT p.*
FROM product p
WHERE '*#*' || p.category || '*#*' LIKE '%*#*1*#*%';

请注意,| |是字符串连接的ANSI/ISO标准。并非所有数据库都支持这种方法;您可能有其他选择。

这是一个可怕的数据结构,您应该修复它-如果可以的话。SQL有一种很好的存储事物列表的方法。它被称为表,而不是列

有时候,我们会被其他人的非常非常非常糟糕的决定所困扰。如果是这种情况,您可以这样使用:

SELECT * 
FROM   product 
WHERE  category LIKE '1*#*%'
    or category LIKE '%*#*1*#*%'
    or category LIKE '%*#*1%'
SELECT p.*
FROM product p
WHERE '*#*' || p.category || '*#*' LIKE '%*#*1*#*%';

请注意,| |是字符串连接的ANSI/ISO标准。并非所有数据库都支持这种方法;您可能有其他选择。

如果您想获得这两条记录,可以使用此选项


如果要获取这两条记录,请选择*FROM product WHERE category,例如“%1%”限制2


从产品中选择*类别,如“%1%”限制2

我们可以像这样使用“LIKE”关键字


从产品中选择*,其中category='1'或category(如'%1,%')和category(如''%1%')或category(如''%1%')或category(如''%1,%')或a.category(如'1,%')我们可以像这样使用'LIKE'关键字


选择产品中的*类别,其中类别='1'或类别'%1,%'和类别''%1%'或类别''%1','或类别''%1',%'。如果类别'1,%'不存储这样的数据,它只会给您带来很多麻烦。

。。。每行一个类别就是SQL方式!你用的是什么产品?SQL只是一种查询语言,而不是特定数据库产品的名称。请为使用postgresql、oracle、sql server、db2的数据库产品添加一个数据库,不要这样存储数据,这只会给您带来很多麻烦。。。每行一个类别就是SQL方式!你用的是什么产品?SQL只是一种查询语言,而不是特定数据库产品的名称。请为使用postgresql、oracle、sql server、db2等的数据库产品添加一个不会过滤掉不需要的记录的。