3

我正在做一个基本的查询

Select Lower(column-name) from table

现在,如果我想在多个列上使用小写字母,我需要做一个

Select Lower(col1), Lower(col2) from table

我想知道是否可以在所有列上执行小写函数应用程序。

就像是

Select Lower(*) from table

这不是一个有效的声明,当我尝试使用 sqlite3 时,我猜其他供应商也一样。有没有人能够通过不同的方法做到这一点。也许是 PL/SQL 或 T-SQL。

4

3 回答 3

7

不,不可能一次获取所有小写的列。

于 2012-06-10T10:48:16.340 回答
2

我同意,如果不提及每一列,就无法做到这一点。但是由于您的消费应用程序可能无论如何都必须遍历所有列和行,我建议无论如何这是转换这些数据的正确位置......

于 2012-06-10T13:48:51.247 回答
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' 等数据类型可能不需要该脚本。因此,通过对列的数据类型应用附加条件来修改脚本。

于 2012-09-16T07:11:29.203 回答