2016-03-24 6 views
1

似たような名前の複数の列を更新したいと思います。 MySQLで可能ですか?このようなMySQLのような更新の列

何か:

update `my_table` set `column` = 0 where `column` regexp `'Q%[0-9]$'` 
+0

column = 0を設定します。さまざまなQを持つ別のテーブルを持つ方が良いかもしれません。 –

答えて

1

これを試してみてください。あなたが適切にあなたのSQLを設定することができるように列名を取得するには、SYSデータベーステーブルを使用する必要があります:

DECLARE @tableName varchar(10) 
SET @tableName = 'yourtablenamehere' 

DECLARE @sql VARCHAR(MAX) 
SET @sql = '' 

SELECT @sql = @sql + 'UPDATE ' + @tableName + ' SET ' + c.name + ' = '''' WHERE ' + c.name + ' IS NULL ;' 
FROM sys.columns c 
INNER JOIN sys.tables t ON c.object_id = t.object_id 
INNER JOIN sys.types y ON c.system_type_id = y.system_type_id 
WHERE t.name = @tableName 
and c.name regexp `'Q%[0-9]$'` 

EXEC (@sql) 

参照:Dynamic update statement with variable column names

0

あなたは、列名に基づいた列の値を更新しようとしている場合ワイルドカード "like"を使用できます。クエリの最適化と実行速度が大幅に向上します。以下の動作するはずのような何か:

更新my_table は、複数の列にまたがってデータをスプレイする悪い習慣です '%' COLUMN_NAMEのようなcolumn '% `

+0

これは_name_列に基づいて選択されず、_value_列にのみ適用されます。 –

関連する問題