【发布时间】:2013-02-09 10:02:34
【问题描述】:
通配符在 sql 中是如何工作的。如果我这样做 select * from table 它会给出所有字段。但是如果我这样做select a* from table 它会出错。它不应该给出所有以a开头的字段吗?
我有点困惑。
【问题讨论】:
-
不。这不是它的工作原理。唯一的规则是
*表示表中的所有列。
通配符在 sql 中是如何工作的。如果我这样做 select * from table 它会给出所有字段。但是如果我这样做select a* from table 它会出错。它不应该给出所有以a开头的字段吗?
我有点困惑。
【问题讨论】:
* 表示表中的所有列。
您可以使用 a.*,其中 a 是表的名称。例如在
select a.* from a left join b on a.id = b.id
您将只返回 a 中的字段,而不返回 b 中的字段
【讨论】:
如果要在 SQL 中使用通配符,您需要使用 LIKE 键入要过滤的列。
SELECT *
FROM table
WHERE column_name LIKE 'a%';
这将为您提供该列上以“a”开头的所有内容。
如果您不想要所有列,则必须在查询中明确给出您想要的每一列的名称。
SELECT LastName, FirstName, Address
FROM table
因此,如果您想要所有以“a”开头的字段,则必须在 SELECT 语句中命名所有以“a”开头的字段。
希望这会有所帮助。
【讨论】:
SELECT * FROM tableName 字面意思是“从 tableName 中选择所有列”。
Philip Graham 在他要求使用 a.* 时的回答是正确的
通配符可帮助您搜索不确定的字符串。这些几乎总是与LIKE 关键字一起使用并放入WHERE 子句或搜索CASE 语句。
有两个通配符 - % 和 _。
% 用于查找任何长度为 0 或更长的字符串。
例如,
SELECT firstName
FROM persons
WHERE UPPER(firstName) LIKE 'J%'
这将从persons 表中返回名字以字母J 开头的所有firstName。这将返回“Jason”、“James”、“Josh”、“Jessica”等等。
请注意,UPPER 函数用于消除区分大小写。
接下来,您可以使用_ 字符来查找是否存在单个字符。
SELECT firstName
FROM persons
WHERE UPPER(firstName) LIKE 'J_M__'
这将返回“James”、“Jimmy”、“Jamos”、“Jxmx”并过滤掉任何“Jason”、“Jaguar”等。
更多信息请点击here
【讨论】: