SQL2005 中 列名中有特殊字符的问题 只要回答有用 均有分 不够再加

lr21shiji 2008-03-26 06:17:10
本人最近做了一个SQL2000 换为 SQL2005的项目
中间出现问题
在前版本代码中调用SQL2000的SQL语句中直接用带"()","/"等特殊字符的列名的时候,如(SELECT 氏名(漢字), 組織コード/部コード, 組織コード/課コード, 組織コード/係班コード FROM 従業員1TBLSV) SQL语句可以通过并执行,但到了SQL2005中则不能通过执行报错说有特殊字符
请问各位大哥有没有好的方法设置一下Sql2005,使SQL2005可以通过特殊字符
如果将每个带有特殊字符的列名都加上“[]”是可以的 但就是工作量太大
各位大哥有没有什么好的方法
告诉小弟
小弟不胜感激
分不够可以再加

...全文
263 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
zhuyx808 2008-03-27
  • 打赏
  • 举报
回复
只要回答有用 均有分
[]
playwarcraft 2008-03-27
  • 打赏
  • 举报
回复
用sql 查詢分析器 自動升成一些執行語句,它會自動幫你帶上【】
wangxuelid 2008-03-27
  • 打赏
  • 举报
回复
顶,,
zjjxxhn19840204 2008-03-27
  • 打赏
  • 举报
回复
字段名加[]
wangxuelid 2008-03-27
  • 打赏
  • 举报
回复
sss
dawugui 2008-03-26
  • 打赏
  • 举报
回复
如上采用QUOTENAME

QUOTENAME
返回带有分隔符的 Unicode 字符串,分隔符的加入可使输入的字符串成为有效的 Microsoft® SQL Server™ 分隔标识符。

语法
QUOTENAME ( 'character_string' [ , 'quote_character' ] )

参数
'{character}[...n]'

Unicode 字符数据字符串。character_string 是 sysname 值。

'quote_character'

用作分隔符的单字符字符串。可以是单引号 (')、左括号或右括号 ([]) 或者双引号 (")。如果未指定 quote_character,则使用括号。

返回类型
nvarchar(129)

示例
本示例采用字符串"abc[]def",并使用"["和"]"字符创建有效的 SQL Server 引用(分隔)标识符。

SELECT QUOTENAME('abc[]def')

下面是结果集:

[abc[]]def]

(1 row(s) affected)

注意,字符串"abc[]def"中的右括号有两个,用于表示转义符。

dawugui 2008-03-26
  • 打赏
  • 举报
回复
[Quote=引用楼主 lr21shiji 的帖子:]
本人最近做了一个SQL2000 换为 SQL2005的项目
中间出现问题
在前版本代码中调用SQL2000的SQL语句中直接用带"()","/"等特殊字符的列名的时候,如(SELECT 氏名(漢字), 組織コード/部コード, 組織コード/課コード, 組織コード/係班コード FROM 従業員1TBLSV) SQL语句可以通过并执行,但到了SQL2005中则不能通过执行报错说有特殊字符
请问各位大哥有没有好的方法设置一下Sql2005,使SQL2005可以通过特殊字符
如果将每…
[/Quote]
你最初的设计实在是太差劲了.
fcuandy 2008-03-26
  • 打赏
  • 举报
回复
不知道是否有这个设置.

但无疑,如果一个字段名里含有特殊字符时, 如果可以有这种设置那么sql server需要花费额外的资源去处理.
比如列名为 asdf/asd

select asdf/asd from tb
它是理解为 asdf 列除以 asd 列,还是 asdf/asd 就是一个列名.

这种做法本来就不好.

楼主想求懒的话,那我也帮不上什么忙.
中国风 2008-03-26
  • 打赏
  • 举报
回复
--打印列名
declare @s nvarchar(100)
select @s=isnull(@s+',','')+quotename(Name) from syscolumns where ID=object_id(N'表名')order by colid
print @s
kelph 2008-03-26
  • 打赏
  • 举报
回复
好像有个设置可以,忘了
wzy_love_sly 2008-03-26
  • 打赏
  • 举报
回复
select quotename('組織コード') as '结果'


[組織コード]
wzy_love_sly 2008-03-26
  • 打赏
  • 举报
回复
quotename()?
本课程根据讲师十多年在世界500强外企的生产环境SQL Serer数据库管理和项目实施经验倾心打造。课程系统性强,知识体系完整,覆盖90%以上的企业环境下SQL Server高可用场景,课程不仅演示详细的操作步骤,更加突出最常见的故障和问题,让学员少走“弯路”,不只是让学员学会“操作”更能让学员“操作”的规范,满满的干货享,一些课程资料(架构图、部署规划表格等)不仅可以帮助学员掌握技能,也可以作为学员在企业生产环境实施SQL Server高可用的配置文档、操作手册等。课程的实验环境介绍:1)全部基于微软域环境和企业版SQL Server AOAG - 95%以上的企业环境都是在域环境,不介绍非域环境和标准版的SQL Server高可用性组,这的配置在企业较罕见,没有实践意义,不浪费学员时间。2)相应域环境已提前部署和配置好 - 学员导入虚拟机即可开始实验,无需从零开始搭建域环境,所有实验SQL Server已加域,直入主题,节省大量时间。3)最新的Windows Server故障转移集群(WS2016、WS2019)和最新版本的SQL Server(SQL2017、SQL2019) -  WS2016-SQL2017与WS2019-SQL2019是目前大多数企业SQL Server高可用的主要平台,基于微软产品生命周期现在一些企业也在讲早期的AOAG向这两个版本迁移,掌握这两种组合不仅让学员学会,更能学有所用。本课程为后续SQL Server进阶课程铺垫,是通向SQL Server DBA 专家的必经之路,讲师每周答疑两次。所有课程资料包括:课程PPT、架构图、部署规划表格、各类脚本学员可下载。     

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧