这是我的Weapons
表:
Name / DPS / Style
Noxious Bow / 1000 / Range
Chaotic Staff / 800 / Magic
Armadyl Crossbow / 750 / Range
Saradomin Godsword / 600 / Melee
Dragon Battlestaff / 600 / Magic
Dragon Longsword / 550 / Melee
Elder Shortbow / 500 / Range
Darklight / 400 / Melee
以下是我的尝试:
SELECT Name, DPS, Style
FROM Weapons
HAVING SUBSTRING(Name, 1, 1)='D';
我想要显示以字母D开头的所有Weapons
。但是,这段代码给我一个语法错误。
答案 0 :(得分:2)
试试这个:
SELECT Name, DPS, Style
FROM Weapons
WHERE Name LIKE 'D%';
答案 1 :(得分:1)
当您使用Oracle时,该功能为SUBSTR
,而非WHERE
,对于任何RDBMS,您都需要使用HAVING
,而不是{{ 1}}:
SELECT Name, DPS, Style
FROM Weapons
WHERE SUBSTR(Name, 1, 1)='D';
SUBSTRING
在Microsoft SQL Server中运行良好。
此外,LEFT
函数得到了广泛支持,如果在Name
上定义了索引,则可能更有可能使用索引。这适用于Oracle,SQL Server和其他人:
SELECT Name, DPS, Style
FROM Weapons
WHERE LEFT(Name, 1)='D';
然而,最好的选择可能是使用LIKE,它得到了广泛的支持和灵活,并且如果存在的话,也可能会在Name
列上使用索引,只要修复后的文本为&#39 ;重新搜索是在开头:
SELECT Name, DPS, Style
FROM Weapons
WHERE Name LIKE 'D%';
你可能会在这个阶段完成一个基本的SQL教程,并记住,虽然" SQL"有一个标准的核心,每个版本都是不同的,如果你正在使用Oracle,你需要寻找特定于Oracle的建议。