我想修改名称列并使其小写,但我也想选择所有其他列。有没有办法做到这一点,而不必写每个列的名称。我怎么能....选择*,lcase(名称)AS名称从表
我试图做这样的事情:
SELECT *, lcase(name) AS name FROM table;
而不是写出来的所有列名,像这样的:
SELECT lcase(name) AS name, zip, address, age, birthday, etc FROM table;
这可能吗?
我想修改名称列并使其小写,但我也想选择所有其他列。有没有办法做到这一点,而不必写每个列的名称。我怎么能....选择*,lcase(名称)AS名称从表
我试图做这样的事情:
SELECT *, lcase(name) AS name FROM table;
而不是写出来的所有列名,像这样的:
SELECT lcase(name) AS name, zip, address, age, birthday, etc FROM table;
这可能吗?
您的代码段就这样工作!虽然select *
被认为是不好的形式,并可能是一个性能问题。
您也可能更愿意使用一个表的别名,以使其更清晰:
SELECT t.*, lcase(t.name) AS name FROM table t;
我认为这个答案很好..只需给lcase另一个名称,如“lcase(t.name)AS lower_name”,以避免与系统混淆。 – 2012-07-14 07:17:27
没有,没有符号选择除一除明确列出所有列的所有列。
(其实这是可以使用动态SQL,但你真的不想这样做。)
你不能,而是一个选择是使用一种观点:
create view table_with_lower_name as
select lcase(name) AS name, zip, address, age, birthday, etc
from table;
使用视图时
select * from table_with_lower_name;
有一些注意事项,比如你不能更新修饰的:
一旦定义(即这是一次性的创建语句),你可以简单地使用通过它们列(例如name
),但它可能适用于您。
+1不幸的是,没有像'SELECT(* EXCEPT name)...'这样的语法,但我相信这最好的回答了这个问题,尽管这是一种解决方法,但它并不是一件好事。问题是,如果你想用很多不同的查询来做到这一点,你必须为每个查询创建一个视图,这肯定会比如果你只是平坦地指定所有列在查询中名称正确(无论如何,这实际上是更好的练习)。 – 2012-07-14 07:17:07
好问题! +1 – aleroot 2012-07-14 07:14:29