当前位置: 首页 > 面试题库 >

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

何灼光
2023-03-14
问题内容

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

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;

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


问题答案:

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

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

结果:

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

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

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


 类似资料:
  • 问题内容: 在视图中,我有一个列 注释 ,其中可能包含大字符串。我只想选择前60个字符,并在所选字符串的末尾附加’ … ‘。 为了选择前60个字符,我使用了以下查询: 现在,我希望其处理如下: 检查它是否包含60个以上的字符。 如果包含,则仅选择前6个字符,并在末尾附加三个点。 如果它不包含超过60个字符,则选择整个字符串,而不在末尾附加三个点。 谢谢 问题答案: 要有条件地检查字符串的长度,请使

  • 问题内容: 我在SQL数据库表中使用了带有2个字段的select Disctinct语句。这是我的代码。 并产生错误:。请帮忙 问题答案: 您在sql语句中只选择了一个列Author。BookCode不存在,因此也不会出现在数据集中。 将BookCode包含在Sql语句中,它将得到修复

  • 假设我有一个有2列的表:name和number。Name是一个字符串,可以有一个或多个单词,我想要一个新的查询选择名称编号,但在Name列,它只有最长的词,原来的表。 SQL中是否有一个函数只从字符串中提取最长的单词?

  • 问题内容: 我想写这样的查询: 对于具有这些列的表:ColA ColB ColC,ColD 从表顺序中选择第一个(ColA,ColB,ColC,ColD)与众不同(ColB,ColC) 该查询应该按ColD对表进行排序,然后按ColB和ColC的组合对结果进行分组(它们可能具有不同的数据类型),并返回组中的第一行(包含表的所有列)。 在MS SQL Server 2005中怎么可能? 问题答案:

  • 问题内容: 我想为站点seo写一个比较过程(t-sql)。 我有一个表,其中包含字段url的一部分的字段“ url”(nvarchar())。例如:“ _mysyte.com/?id=2_ ”。每个URL的此表还包含我需要提取的元数据。 主要问题是网站上的完整url看起来像是“ _mysyte.com/?id=2®ion=0 &page=1_ ”,我只需要忽略一切,除了表中的url: 我的意思是:

  • 问题内容: 目标是用数字表示的char值替换SQL查询中返回的整数值。例如: 标记为“端口”的表属性定义为1-4之间的整数。1 =篮球,2 =曲棍球,等等。下面是数据库表,然后是所需的输出。 数据库表: 所需的输出: 将这些整数值转换为String值的最佳实践是什么?在传递给程序之前使用SQL转换值?使用脚本语言来更改程序中的值?更改数据库设计? 问题答案: 数据库应该保存这些值,并且您应该执行连