博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sqlserver什么时候用中括号来定义字段名?
阅读量:4162 次
发布时间:2019-05-26

本文共 1371 字,大约阅读时间需要 4 分钟。

一般来讲,sqlserver中,字段名的命名是没有限制的,但在调用的时候,为了能够筛选字段,则有时候我们需要加上中括号或者引号

例如

declare @t table(id int,[select] bit,[1] int,date date,[税率%] money)

类似 select、delete等sqlserver关键字是不能直接定义的,如果非要用这些关键字,那么就需要使用中括号来定义了

数字开头,不符合命名规范,也是不能直接定义的,但是通过中括号,还是可以这么用

然后就是特殊符号啦,空格啦,也可以使用中括号来定义为字段名

除了定义时需要用到中括号来定义特殊字段名,筛选时也一样

select [税率%] from @t where [select]=0

除了这些固定定义外,其实更常见的地方在于行列转换中,pivot和unpivot中

DECLARE @T1 TABLE (PersonName VARCHAR(100),YearMonth int,Amount decimal(19,9))INSERT INTO @T1SELECT '张三','201901','6000' UNION ALLSELECT '李四','201901','5000' UNION ALL SELECT '张三','201902','6000' UNION ALLSELECT '李四','201902','5000' UNION ALLSELECT '王五','201902','7000' UNION ALL SELECT '张三','201903','8000' UNION ALLSELECT '李四','201903','5000' UNION ALLSELECT '王五','201903','7500' UNION ALL SELECT '张三','201904','8500' UNION ALLSELECT '李四','201904','5000' UNION ALLSELECT '王五','201904','7500' UNION ALL SELECT '张三','201906','9500' UNION ALLSELECT '李四','201906','5000' UNION ALLSELECT '王五','201906','7500' select * from @t1pivot(max(amount) for yearmonth in ([201901],[201902],[201903],[201904],[201905],[201906])) p

在YearMonth列中,值可以是任意类型,但在行转列时,如果要以YearMonth的值作为字段名,那么就需要加上中括号来定义了,因为命名规则规定,变量名不能以数字开头

当然,如果值中间出现了中括号,或者字段名中间出现了中括号,我们还是有办法补救的,用双引号来代替

declare @t table(id int,[select] bit,[1] int,date date,[税率%] money,"字段名里出现了中括号 [我就随便看看]" money)

但如果。。。。你非要在字段名里同时出现双引号和中括号。。。。那我只能说,你的命名实在太另类了。。。。

转载地址:http://zavxi.baihongyu.com/

你可能感兴趣的文章
SVG 形状学习之——SVG 矩形<rect>
查看>>
SVG 形状学习之——SVG圆形
查看>>
SVG 滤镜学习之——SVG 滤镜
查看>>
mysql中用命令行复制表结构的方法
查看>>
hbase shell出现ERROR: org.apache.hadoop.hbase.ipc.ServerNotRunningYetException
查看>>
让代码变得更优雅-Lombok
查看>>
解决Rhythmbox乱码
查看>>
豆瓣爱问共享资料插件发布啦
查看>>
Ubuntu10.10 CAJView安装 读取nh\kdh\caj文件 成功
查看>>
kermit的安装和配置
查看>>
vim 配置
查看>>
openocd zylin
查看>>
进程创建时文件系统处理
查看>>
进程创建时信号处理函数处理
查看>>
进程创建时信号处理
查看>>
进程创建时内存描述符处理
查看>>
进程创建时命名空间处理
查看>>
进程创建时IO处理
查看>>
进程创建时线程栈处理
查看>>
进程创建时pid分配
查看>>