只是一个小问题,如果我有一个使用SQL的数据库:
Names: Max¦ John¦ May¦ Olivia
Numbers: 3, 7, 9¦ 1, 3, 4¦ 8, 5, 3¦ 5, 7, 1是否有一种使用SQL检查“number”列的方法,以查看有多少人喜欢数字5,然后向用户显示他们的姓名(喜欢数字)。
发布于 2017-10-01 12:21:28
首先,您有一个糟糕的数据库设计,但是如果您还想继续使用它,下面是如何实现它:
SELECT *
FROM YourTableName
WHERE Numbers LIKE '%5%';结果:
+--------+---------+
| Name | Numbers |
+--------+---------+
| May | 8, 5, 3 |
| Olivia | 5, 7, 1 |
+--------+---------+但我再次承诺将这一设计改为:
DECLARE @Names TABLE ( ID INT IDENTITY(1,1), Name VARCHAR(30) );
DECLARE @Numbers TABLE ( Name INT, Number INT);
INSERT INTO @Names VALUES
('Max'),
('John'),
('May'),
('Olivia');
INSERT INTO @Numbers VALUES
(1, 3),
(1, 7),
(1, 9),
(2, 1),
(2, 3),
(2, 4),
(3, 8),
(3, 5),
(3, 3),
(4, 5),
(4, 7),
(4, 1);
/**/
SELECT N.Name, NM.Number
FROM @Names N INNER JOIN @Numbers NM ON N.ID = NM.Name
WHERE NM.Number = 5;结果:
+--------+--------+
| Name | Number |
+--------+--------+
| May | 5 |
| Olivia | 5 |
+--------+--------+Demo1
Demo2
这里也是一个好的文章开始。
发布于 2017-10-01 12:04:34
以下是不将数字存储在字符串中的一些原因:
如果只想在字符串中找到"5“,可以使用like
where numbers like '%5%'这可能不符合您的要求,因为它将匹配"5“到"15”。尽管这是可以修复的,但请返回并理解为什么不应该以这种方式存储数据。相反,您想要一张桌子,如:
Name Number
Max 3
Max 7
Max 9
John 1
. . .https://stackoverflow.com/questions/46512175
复制相似问题