小编典典

SQL选择不同的子字符串,如mundleup howto

sql

我有一个表,该表的字段与此类似:

ANIMAL
========
FISH 54
FISH 30
DOG 12
CAT 65
CAT 09
BIRD 10
FISH 31
DOG 10

以后该领域可能会添加新的动物,例如

GOAT 72
DOG 20

我想做的是SELECT查询每个动物名称返回唯一的一行,返回一个数据集,每种动物每种类型都有一行,我以后可以解析该数据集以列出表中存在的动物。

所以,在魔术之后,我会

FISH 54
DOG 12
CAT 65
BIRD 10
GOAT 72

…从中我列出我的清单。

到目前为止,我一直在和SELECTDISTINCT,和子查询混为一谈SUBSTRING(),但是我觉得与SO蜂巢式思维相比,我想出的任何结果都可能会显得苍白无力。有人可以帮忙吗?

更新

如果有帮助,我的失败尝试说明了我想做什么:

SELECT DISTINCT substring(animal,1,4) FROM table;

只是现在我没有全名,只是一个子串。:(


阅读 212

收藏
2021-03-23

共1个答案

小编典典

这将适用于SQL Server。如果使用其他方法,则需要找出leftcharindex的相应功能。当然,可以用子字符串替换Left。

select distinct left(T.Animal, charindex(' ', T.Animal, 1)-1)
from YourTable as T

结果:

-------------------------
BIRD
CAT
DOG
FISH

在MySQL中,您将使用leftlocate。(代码未经测试)

select distinct left(T.Animal, locate(' ', T.Animal, 1)-1)
from YourTable as T
2021-03-23