当前得到一个数据库(CW)的数据,其表名称为:
1001.凭证表
1001.科目表
1001.余额表
........
1002.凭证表
1002.科目表
1002.余额表
........
1003.凭证表
1003.科目表
1003.余额表
..............
----
现在想把所有的表导出,但由于DTS自动把.前的前缀都去掉,导致数据表重复而无法导出。
因此想把库中所有表名称中的“.”替换为“_”,请问如何实现?????
------解决方案--------------------
- SQL code
replace
------解决方案--------------------
replace(col,'.','_')
------解决方案--------------------
- SQL code
select replace('1001.凭证表','.','_') ---------------------------------------------------------------------------------------------------------------- 1001_凭证表(所影响的行数为 1 行)
------解决方案--------------------
REPLACE
將第一字串運算式中出現的第二給定字串運算式取代為第三運算式。
語法
REPLACE ( 'string_expression1' , 'string_expression2' , 'string_expression3' )
引數
'string_expression1'
指定要搜尋的字串運算式。 string_expression1 可為字元或二進位資料。
'string_expression2'
指定嘗試找尋的字串運算式。 string_expression2 可為字元或二進位資料。
'string_expression3'
指定取代為此字串運算式。 string_expression3 可為字元或二進位資料。
傳回型別
若 string_expression (1、 2,或 3) 是已支援之字元資料型別之一,則傳回字元資料。若 string_expression (1、 2,或 3) 是已支援之 binary 資料型別之一,則傳回二進位資料。
範例
此範例將 abcdefghi 中的 cde 字串取代為 xxx。
SELECT REPLACE('abcdefghicde','cde','xxx')
GO
以下為結果集:
------------
abxxxfghixxx
(1 row(s) affected)
------解决方案--------------------
- SQL code
--sa登录use 数据库(CW)select replace(name,'.','-') from sys.objects where type='U'
------解决方案--------------------
- SQL code
sp_rename '旧表名','新表名'
------解决方案--------------------
你怎么操作sysobjects表?这是系统表啊!
------解决方案--------------------
------解决方案--------------------
- SQL code
select 'sp_rename ''' + name + ''', ''' + replace(name,'.','_') + '''; ' + chr(13) from sys.objects where type='U'
------解决方案--------------------
------解决方案--------------------
- SQL code
select 'exec sp_rename ''' + s.name + '.' + t.name + ''', ''' + s.name + '_' + t.name + ''''from sys.tables t, sys.schemas s where t.schema_id = s.schema_id