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

一方、上記のスクリプトは、「下位」関数を適用するために varchar への明示的な変換が必要なため、「ntext」データ型に対して暗黙的に機能しません。また、スクリプトは「int」、「datetime」などのデータ型には必要ない場合もあります。そのため、列のデータ型に追加の条件を適用してスクリプトを変更します。

于 2012-09-16T07:11:29.203 に答える