|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
业界普遍的声音认为:“MySQL是一个可靠的数据库系统,MySQL学习教程无论是在嵌入式或大型群集系统的部署中,还是在基于Web的应用程序领域。复制代码代码以下:
createtabletb(idint,valuevarchar(10))
insertintotbvalues(1,"aa")
insertintotbvalues(1,"bb")
insertintotbvalues(2,"aaa")
insertintotbvalues(2,"bbb")
insertintotbvalues(2,"ccc")
go
createfunction[dbo].[f_str](@idint)returnsnvarchar(1000)
as
begin
declare@strnvarchar(1000)
set@str=""
select@str=@str+","+cast(valueasnvarchar(900))fromtbwhereid=@id
set@str=right(@str,len(@str)-1)
return@str
end
go
--挪用函数
selectid,value=dbo.f_str(id)fromtbgroupbyid
运转了局:
原本在下面的函数中一切的nvarchar都是varchar范例的,而且下面函数的白色处在挪用cast办法时,并未指定长度。伴侣测试后发明,了局会在30个字符时截断,本来觉得是varchar和nvarchar的区分,我试着将varchar改成了nvarchar,伴侣测试的了局是在54个字符处截断。我查了下,是varchar的默许长度成绩,见sqlserver联机丛书中上面的申明:
char和varchar
流动长度(char)或可变长度(varchar)字符数据范例。
char[(n)]
长度为n个字节的流动长度且非Unicode的字符数据。n必需是一个介于1和8,000之间的数值。存储巨细为n个字节。char在SQL-92中的同义词为character。
varchar[(n)]
长度为n个字节的可变长度且非Unicode的字符数据。n必需是一个介于1和8,000之间的数值。存储巨细为输出数据的字节的实践长度,而不是n个字节。所输出的数据字符长度能够为零。varchar在SQL-92中的同义词为charvarying或charactervarying。
正文
假如没有在数据界说或变量声明语句中指定n,则默许长度为1。假如没有利用CAST函数指定n,则默许长度为30。
将为利用char或varchar的工具被指派数据库的默许排序划定规矩,除非用COLLATE子句别的指派了特定的排序划定规矩。该排序划定规矩把持用于存储字符数据的代码页。
撑持多言语的站点招考虑利用Unicodenchar或nvarchar数据范例以只管削减字符转换成绩。假如利用char或varchar:
假如但愿列中的数据值巨细靠近分歧,请利用char。
假如但愿列中的数据值巨细明显分歧,请利用varchar。
假如实行CREATETABLE或ALTERTABLE时SETANSI_PADDING为OFF,则一个界说为NULL的char列将被作为varchar处置。
当排序划定规矩代码页利用双字节字符时,存储巨细仍旧为n个字节。依据字符串的分歧,n个字节的存储巨细大概小于n个字符。如果表有1000个记录,通过索引查找记录至少要比顺序扫描记录快100倍。 |
|