char和varchar的一点小区别
DECLARE @vcID varChar(50)
set @vcID='1c02a297-9619-4820-b697-ddc718b3df9b'
set @vcID=''''+@vcID+''''
print @vcID
查询结果:
'1c02a297-9619-4820-b697-ddc718b3df9b'
DECLARE @vcID Char(50)
set @vcID='1c02a297-9619-4820-b697-ddc718b3df9b'
set @vcID=''''+@vcID+''''
print @vcID
查询结果:
'1c02a297-9619-4820-b697-ddc718b3df9b
注意:第二个查询结果后面还有若干个空格。
看完sql的帮助应该可以找到答案。
如果要存储的数据比允许的字符数多,则数据就会被截断。例如,如果某列被定义为 char(10) 并且值"This is a really long character string"被存储到该列中,则 Microsoft® SQL Server™ 将该字符串截断为"This is a"。
当指定了 NOT NULL 子句时,char 数据类型是固定长度数据类型。如果一个比列的长度小的值被插入到 char NOT NULL 列中,则值的右边以空格填补剩余的位置。例如,如果一个列被定义为 char(10) 并且要存储的数据是"music",则 SQL Server 将这个数据存储为"music_____",这里"_"表示空格。
当创建一个 char NULL 列时,如果 ANSI_PADDING 是ON,它的表现就如同一个 char NOT NULL列:值的右边按照列的大小进行填补。当创建一个 char NULL 列时,如果 ANSI_PADDING 是 OFF,它的表现就如同一个将 ANSI_PADDING 设置为 OFF 的 varchar 列:尾随空格将被截断。
varchar 是可变长度的数据类型。比列的长度小的值,不会按照列的长度在其右边填补。当创建列时,如果 ANSI_PADDING 选项设为 OFF,则所有存储在列中的字符值的尾随空格都将被截断。当创建列时,如果 ANSI_PADDING 设为 ON,则尾随空格不被截断。
CHAR 函数可以把一个整数转换为 ASCII 字符。当确定控制字符时(比如回车或换行),这是很有用的。在字符串中用 CHAR(13) 和 CHAR(10) 产生一个回车并生成一个新行。
PRINT 'First line.' + CHAR(13) + CHAR(10) + 'Second line.'