首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

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

2012-08-15 
???请问如何把数据库中所有表的名称中的“.”替换为“_”???当前得到一个数据库(CW)的数据,其表名称为:1001.凭

???请问如何把数据库中所有表的名称中的“.”替换为“_”???
当前得到一个数据库(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 

热点排行