我希望将所有出现的?
替换为表中所有列的空白空间。
示例:
This is a?string
会变成
This is a string
目前我已经找到了如何只为一个列进行操作
UPDATE tableName
SET columnName = REPLACE(columnName,'"','\'')
有没有办法选择并应用于al列?我不希望“尝试”它,好像表被破坏或删除它会导致很多不安。任何帮助将不胜感激。
答案 0 :(得分:3)
您无法自动为所有列执行此操作,您需要单独列出列,但您仍然可以使用一个语句执行此操作:
UPDATE tableName
SET columnName1 = REPLACE(columnName1,'"','\''),
columnName2 = REPLACE(columnName2,'"','\''),
columnName3 = REPLACE(columnName3,'"','\''),
...
columnNameN = REPLACE(columnNameN,'"','\'')
答案 1 :(得分:3)
购买之前先试试:
SELECT Replace(columnName1, '?', ' ')
, Replace(columnName2, '?', ' ')
, Replace(columnName3, '?', ' ')
FROM your_table
如果您对结果感到满意,请更新
UPDATE your_table
SET columnName1 = Replace(columnName1, '?', ' ')
, columnName2 = Replace(columnName2, '?', ' ')
, columnName3 = Replace(columnName3, '?', ' ')
您可能希望限制查询的效果。目前它将适用于表格中的每一行,无论列值中是否存在任何问号。
因此,您应该考虑添加一个检查存在的WHERE
子句。
SELECT Replace(columnName1, '?', ' ')
FROM your_table
WHERE Locate('?', columnName1) > 0
答案 2 :(得分:0)
这是为表中的所有字段创建更新语句的快捷方式。您将在下面的SQL语句的WHERE
子句中填写表名和数据库名,然后运行代码,它将返回一个您可以复制然后运行的SQL语句。
对于表中每个字段的单独更新语句:
SELECT concat('UPDATE ', TABLE_NAME, ' SET ', COLUMN_NAME, ' = REPLACE(', COLUMN_NAME, ', ''?'', '''')')
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE TABLE_NAME = 'table_name' AND TABLE_SCHEMA = 'database_name';
对于表中每个字段的单个更新语句。放UPDATE table_name
然后粘贴此SQL语句的结果。
SELECT concat('SET ', COLUMN_NAME, ' = REPLACE(', COLUMN_NAME, ', ''?'', ''''),')
FROM INFORMATION_SCHEMA.COLUMNS c
WHERE TABLE_NAME = 'table_name' AND TABLE_SCHEMA = 'database_name';
如果您只想更新char或varchar字段,可以将其添加到WHERE
子句中:
AND DATA_TYPE in ('char', 'varchar')
要为数据库中的每个表执行此操作,只需从WHERE
子句中删除TABLE_NAME逻辑。