当前位置: 代码迷 >> Sql Server >> ?请教怎么把数据库中所有表的名称中的“.”替换为“_”?
  详细解决方案

?请教怎么把数据库中所有表的名称中的“.”替换为“_”?

热度:95   发布时间:2016-04-27 12:04:00.0
???请问如何把数据库中所有表的名称中的“.”替换为“_”???
当前得到一个数据库(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表?这是系统表啊!
------解决方案--------------------
探讨
用语句:
use 数据库(CW)
select replace(name,'.','-')
from sys.objects
where type='U'
执行后,我检查了一下,还是没变。

我重新检查了一下数据库,发现1001、1002......都是用户名称,请问如何解决啊?

------解决方案--------------------
SQL code
select 'sp_rename ''' + name + ''', ''' + replace(name,'.','_') + '''; ' + chr(13) from sys.objects where type='U'
------解决方案--------------------
探讨
引用:
用语句:
use 数据库(CW)
select replace(name,'.','-')
from sys.objects
where type='U'
执行后,我检查了一下,还是没变。

我重新检查了一下数据库,发现1001、1002......都是用户名称,请问如何解决啊?

昏迷。

------解决方案--------------------
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
  相关解决方案