深爱那片海 发表于 2015-1-16 14:07:10

在Sql Server中将字符串支解成表格数据示例

mysql的原来开发者又开发了MariaDB,MariaDB适合用来替代mysql吗好比我们有一个字符串
declare@appNamevarchar(50)
select@appName=UserID=admin,Account=ABC

然后我们要以","为行支解标记,以"="为列支解标记将@appName支解成多行两列的格表数据。
也就是将下面的@appName值支解成
NameValueUserIDadminAccountNumberABC这类格局的数据。

就教了良多伴侣,上面将最复杂的办法贴出来,供人人参考:
declare@atable(avarchar(100),bvarchar(100))
declare@svarchar(100),
@mvarchar(100),
@iint

set@s=UserID=admin,Account=ABC
set@i=charindex(,,@s)

while@i>0
begin
set@m=left(@s,@i-1)
insertinto@a(a)values(@m)
set@s=right(@s,len(@s)-@i)
set@i=charindex(,,@s)
end
insertinto@a(a)values(@s)

selectleft(a,charindex(=,a)-1)asName,right(a,len(a)-charindex(=,a))asValuefrom@a


以上sql经自己测试是准确的,人人能够做参考改成合适本人的sql语句。Merge将一定数量的MyISAM表联合而成一个整体,在超大规模数据存储时很有用

透明 发表于 2015-1-18 12:08:05

这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。

仓酷云 发表于 2015-1-25 23:34:17

但是随着数据量的增大,这种成本差距会逐渐减小,趋于相等。(500万数量级只相差10%左右)

深爱那片海 发表于 2015-2-4 13:54:51

sqlserver的痛苦之处在于有用文档的匮乏,很多只是表明的东西

愤怒的大鸟 发表于 2015-2-10 01:47:28

这是一个不错的新特性。虽然索引的附加字段没有索引键值效率高,但是相对映射到数据表中效率还是提高了很多。我做过试验,在我的实验环境中会比映射到表中提高30%左右的效率。

爱飞 发表于 2015-2-28 16:27:15

大家注意一点。如下面的例子:

山那边是海 发表于 2015-3-10 04:10:40

一直以来个人感觉SQLServer的优化器要比Oracle的聪明。SQL2005的更是比2k聪明了不少。(有次作试验发现有的语句在200万级时还比50万级的相同语句要快show_text的一些提示没有找到解释。一直在奇怪。)

金色的骷髅 发表于 2015-3-17 04:54:05

对一张百万级别的表建游标,同时又没有什么过滤条件,取得游标效率是如果直接SQL查询百万条数据;如果再对每条记录做处理,耗时将更长。

精灵巫婆 发表于 2015-3-23 20:51:08

是否碎片会引发效率问题?这都是需要进一步探讨的东西。varbinary(max)代替image也让SQLServer的字段类型更加简洁统一。
页: [1]
查看完整版本: 在Sql Server中将字符串支解成表格数据示例