我想更新多個具有相似名稱的列。在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]$'`
試試這個。您需要使用SYS數據庫表來獲取列名,因此您可以正確設置你的SQL:
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
= 0 其中column
LIKE '%' 列名'%'
這不會根據列_name_進行選擇,只能在列_value_上進行選擇。 –
這是不好的做法,張開跨多個列中的數據。另外一張桌子上有各種各樣的Q可能會更好。 –