似たような名前の複数の列を更新したいと思います。 MySQLで可能ですか?このようなMySQLのような更新の列
何か:
update `my_table` set `column` = 0 where `column` regexp `'Q%[0-9]$'`
似たような名前の複数の列を更新したいと思います。 MySQLで可能ですか?このようなMySQLのような更新の列
何か:
update `my_table` set `column` = 0 where `column` regexp `'Q%[0-9]$'`
これを試してみてください。あなたが適切にあなたの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)
あなたは、列名に基づいた列の値を更新しようとしている場合ワイルドカード "like"を使用できます。クエリの最適化と実行速度が大幅に向上します。以下の動作するはずのような何か:
更新my_table
は、複数の列にまたがってデータをスプレイする悪い習慣です '%' COLUMN_NAMEのようなcolumn
'% `
これは_name_列に基づいて選択されず、_value_列にのみ適用されます。 –
column
= 0を設定します。さまざまなQを持つ別のテーブルを持つ方が良いかもしれません。 –