如何检查 SQL 中的查询中的子字符串?
How do I check the substring in a query in SQL?
这是我的 Weapons
table:
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
。但是,这段代码给我一个语法错误。
当您使用 Oracle 时,函数是 SUBSTR
,而不是 SUBSTRING
,对于任何 RDBMS,您需要使用 WHERE
,而不是 HAVING
]:
SELECT Name, DPS, Style
FROM Weapons
WHERE SUBSTR(Name, 1, 1)='D';
SUBSTRING
在 Microsoft SQL Server 中可以正常工作。
此外,LEFT
函数得到了相当广泛的支持,如果在 Name
上定义了一个索引,则可能更有可能使用索引。这将适用于 Oracle、SQL 服务器和其他:
SELECT Name, DPS, Style
FROM Weapons
WHERE LEFT(Name, 1)='D';
然而,最好的选择可能是使用 LIKE,它得到广泛支持且灵活,并且也可能会在 Name
列上使用索引(如果存在的话),只要固定文本'正在搜索开头:
SELECT Name, DPS, Style
FROM Weapons
WHERE Name LIKE 'D%';
您可能可以在这个阶段完成基本的 SQL 教程,并记住虽然 "SQL" 有一个标准核心,但每个版本都不同,您需要如果您使用的是 Oracle,请寻找特定于 Oracle 的建议。
试试这个:
SELECT Name, DPS, Style
FROM Weapons
WHERE Name LIKE 'D%';
这是我的 Weapons
table:
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
。但是,这段代码给我一个语法错误。
当您使用 Oracle 时,函数是 SUBSTR
,而不是 SUBSTRING
,对于任何 RDBMS,您需要使用 WHERE
,而不是 HAVING
]:
SELECT Name, DPS, Style
FROM Weapons
WHERE SUBSTR(Name, 1, 1)='D';
SUBSTRING
在 Microsoft SQL Server 中可以正常工作。
此外,LEFT
函数得到了相当广泛的支持,如果在 Name
上定义了一个索引,则可能更有可能使用索引。这将适用于 Oracle、SQL 服务器和其他:
SELECT Name, DPS, Style
FROM Weapons
WHERE LEFT(Name, 1)='D';
然而,最好的选择可能是使用 LIKE,它得到广泛支持且灵活,并且也可能会在 Name
列上使用索引(如果存在的话),只要固定文本'正在搜索开头:
SELECT Name, DPS, Style
FROM Weapons
WHERE Name LIKE 'D%';
您可能可以在这个阶段完成基本的 SQL 教程,并记住虽然 "SQL" 有一个标准核心,但每个版本都不同,您需要如果您使用的是 Oracle,请寻找特定于 Oracle 的建议。
试试这个:
SELECT Name, DPS, Style
FROM Weapons
WHERE Name LIKE 'D%';