当前位置: 代码迷 >> Sql Server >> sql xml中string-length用法解决方案
  详细解决方案

sql xml中string-length用法解决方案

热度:57   发布时间:2016-04-24 09:08:31.0
sql xml中string-length用法

declare @xn_input xml,@xn_out xml,@xs_msg nvarchar(2000);
set @xn_input='<info type="QueryCom">
<grid key="data">
<row qry_key="01" qry_cx="And"  />
<row qry_key="0101" fld_name="usr_code" op_name="Equal" qry_value="Wangjm" qry_cx="Not"  />
<row qry_key="0102" qry_cx="Or"  />
<row qry_key="010201" fld_name="usr_code" op_name="Like" qry_value="abc" qry_cx="Not"  />
<row qry_key="010202" fld_name="usr_name" op_name="LikeA" qry_value="fgb" qry_cx="Not"  />
</grid>
</info>';

select @xn_input.value('info/grid/row/[string-length()=2])','varchar(20)') as c1;


提示语法错误
希望得到类似于max(length(qry_key))的效果,在本例中即是3

------解决思路----------------------
官方有说明文档吗?
------解决思路----------------------
最好帮助上有实例。
------解决思路----------------------
先转成表的形式才能求MAX()啊。
不理解为什么是3,这个MAX你自己写吧。
select c1.value('@qry_key','varchar(20)') [key],
       c1.value('string-length(@qry_key)','int') key_length
  from @xn_input.nodes('info/grid/row') as grid(c1);

key                   key_length
-------------------- -----------
01                             2
0101                           4
0102                           4
010201                         6
010202                         6

  相关解决方案