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