Jam*_*mes 1 sql database replace sql-server-2005
我有一个大约400,000多行的表.我正在编写一些模式匹配代码,但在我这样做之前需要清理一个列.这归结为做类似替换的操作.
我尝试一次列出一个......
Update T_ADDRESS set ADDR_LINEONE = REPLACE(ADDR_LINEONE,' southeast ',' se ')
Update T_ADDRESS set ADDR_LINEONE = REPLACE(ADDR_LINEONE,' southwest ',' sw ')
Run Code Online (Sandbox Code Playgroud)
因为我有超过500个......这花了太长时间.
现在我想把它们筑巢......
Update T_ADDRESS set ADDR_LINEONE = REPLACE(REPLACE(ADDR_LINEONE,' southwest ',' sw '),' southeast ',' se ')
Run Code Online (Sandbox Code Playgroud)
但这仍然很痛苦.我需要使这个代码适用于所有大小的表(1记录到500万条记录).
有人有什么建议吗?我顺便使用SQL Server.
无论你多么喜欢REPLACE,你都必须始终端到端地扫描表格.这就是杀死性能的原因,因为必须以任何合理的方式索引ADDR_LINEONE字段,所以无法更改.
由于这应该是一次性操作,因此长时间无关紧要.
如果这是一个重复的操作,那么你的问题不在这里,就是如何将数据加载到表中:在保存数据之前进行转换,否则你就没有机会了.