我需要有一个搜索和替换功能,它将搜索表中的所有列,并将替换所有的逗号<,>,双引号<“> ,和单引号<“>用的空间,我已经通过博客去像http://vyaskn.tripod.com/sql_server_search_and_replace.htm但该方法不起作用如何使用搜索和替换表中的所有列
回答
取出逗号:。
update mytable
set myColumn = REPLACE(myColumn, ",", " ")
对于双引号:
update mytable
set myColumn = REPLACE(myColumn, "''", " ")
对于单引号:
update mytable
set myColumn = REPLACE(myColumn, "'", " ")
欲了解更多信息,请参阅:http://msdn.microsoft.com/en-us/library/ms186862.aspx
OP需要一个解决方案来替换表中的所有列。 –
嗨克里斯,感谢您的回应,但作为阿德里安提到我需要一个命令来执行所有列sys.columns r类似的东西。 – user932809
DECLARE @table NVARCHAR(257) = N'dbo.table_name';
DECLARE @sql NVARCHAR(MAX) = N'UPDATE ' + @table + ' SET ';
SELECT @sql = @sql + CHAR(13) + CHAR(10)
+ QUOTENAME(name) + ' = '
+ ' REPLACE(REPLACE(REPLACE('
+ QUOTENAME(name)
+ ','','', '''')'
+ ',''"'', '''')'
+ ',''' + CHAR(39) + CHAR(39) + ''', ''''),'
FROM sys.columns
WHERE system_type_id IN (167, 175, 231, 239)
AND [object_id] = OBJECT_ID(@table);
SET @sql = LEFT(@sql, LEN(@sql)-1) + ';';
PRINT @sql;
--EXEC sp_executesql @sql;
更正了针对sys.types的检查,以改为使用system_type_id常量。既然有可能,你可以用'CREATE TYPE not_a_char FROM int;'来游戏它...... –
Hi Aaron,谢谢你的解决方案。但是当我执行它时,它给了我以下错误: - Msg 102,Level 15,State 1,Line 1 “SE”附近的语法错误。你可以请建议一些解决方案。提前致谢。 – user932809
当您打印时,或仅在执行时,您是否收到该错误消息?您是否打印了试图调试输出的内容?抓住,但你有表或列的名称与空格? –
- 1. 搜索并替换Java中的所有搜索文本TextArea
- 2. 如何通过使用键和值的散列来搜索和替换(替代)
- 3. 我如何搜索和替换使用python正则表达式
- 4. Sharepoint搜索列表中的所有列
- 5. Vim的 - 搜索和替换所有字符中的每一行
- 6. 搜索和替换
- 7. 搜索并替换所有元素
- 8. 如何在gvim中搜索和替换以下模式搜索
- 9. 如何搜索和替换sql数据库中所有表中所有列的所有列中的一部分字符串
- 10. 搜索和替换使用bash
- 11. XML搜索和替换值使用perl
- 12. 使用(超)Sed搜索和替换.xml
- 13. 在Excel中如何使用库搜索和替换列上的字符串
- 14. 的Javascript搜索和替换
- 15. 搜索和替换函授阵列
- 16. 使用全文搜索来搜索并替换列Mysql
- 17. 正则表达式搜索和替换
- 18. 在表格中搜索所有列
- 19. 如何在MySQL中使用正则表达式进行搜索和替换?
- 20. Imacro搜索和替换
- 21. JavaScript搜索和替换?
- 22. python搜索和替换
- 23. VIM搜索和替换
- 24. 搜索和替换SQL
- 25. 搜索和替换操作
- 26. Python的正则表达式搜索和替换所有的出现
- 27. 如何使用vim visual模式搜索和替换美元
- 28. Windows:如何使用“设置”与动态搜索和替换?
- 29. 如何使用Python搜索和替换XML?
- 30. 使用VI如何搜索和替换以下语句?
什么不起作用?你指出的解决方案看起来很有希你有什么尝试?你面临什么问题? –
我需要它只在一个表上工作,而不是在整个数据库中的所有表上工作。上述存储过程也不适用于整数,小数,数字数据类型。 \t \t \t有它仅适用于我用这一个表: - 声明@tablename \t \t为nvarchar(50)=“t_recur”,并使用它仅适用于我已删除了部分表列的地方设置表名对于数据库中的所有表格Plz advice – user932809
您希望替换工作在int/decimal/numeric上吗?恐怕你运气不好。如果你在这些列中看到逗号等,这是因为它们是如何呈现的,而不是它们如何存储。 –