我在做我正在做的基本查询
Select Lower(column-name) from table
现在,如果我想在多个列上做小写,我需要做一个
Select Lower(col1), Lower(col2) from table
我想知道是否可以在所有列上执行小写函数应用程序。
像
这样的东西Select Lower(*) from table
这不是一个有效的陈述,当我尝试使用sqlite3时,我猜它也适用于其他供应商。有没有人能够通过不同的方法做到这一点。可能是PL / SQL或T-SQL。
答案 0 :(得分:7)
没有。不可能一次性获取小写的所有列。
答案 1 :(得分:2)
我同意,如果不提及每一栏,就没有办法做到这一点。但是,由于您的消费应用程序无论如何都必须遍历所有列和行,我建议无论如何都是转换此数据的正确位置......
答案 2 :(得分:0)
虽然不可能使用内置的sql构造来实现这一点,但是一个小的sql脚本应该可以解决这个问题。请考虑下面给出的脚本:
declare @number_of_columns int
declare @counter int
declare @query nvarchar(max)
declare @column_name nvarchar(max)
set @query = 'select '
set @counter = 1
select @number_of_columns = count(ordinal_position) from information_schema.columns where table_name = '<your table name>'
while(@counter <= @number_of_columns)
begin
select @column_name = column_name from information_schema.columns
where table_name = '<your table name>' and ordinal_position = @counter
if(@counter < @number_of_columns)
begin
Set @query = @query + 'lower(' + (@column_name) + '),'
end
else
begin
Set @query = @query + 'lower(' + (@column_name) + ')'
end
set @counter = @counter + 1
end
set @query = @query + ' from <your table name>'
select @query
EXEC sp_executesql @query = @query
虽然上述脚本不能隐式使用'ntext'数据类型,因为它需要显式转换为varchar来应用'lower'函数,对于'int','datetime等数据类型也可能不需要脚本'等等。因此,通过对列的数据类型应用其他条件来修改脚本。