Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何检查XML在SQL中是否有值?_Sql_Xml - Fatal编程技术网

如何检查XML在SQL中是否有值?

如何检查XML在SQL中是否有值?,sql,xml,Sql,Xml,我对从数据库获取的XML有一个简单的问题。现在,此XML中可以没有值,如下所示: <TryXML xmlns=""> <TryXML_XML_VERSION>1.0</TryXML_XML_VERSION> <TITLE_DESC /> <ISCI_CODE /> <PRODUCT_DESC /> <PLAY_LENGTH /> <START_TIME /> <COMPRESSI

我对从数据库获取的XML有一个简单的问题。现在,此XML中可以没有值,如下所示:

 <TryXML xmlns="">
 <TryXML_XML_VERSION>1.0</TryXML_XML_VERSION>
 <TITLE_DESC />
 <ISCI_CODE />
 <PRODUCT_DESC />
 <PLAY_LENGTH />
 <START_TIME />
 <COMPRESSION_LEVEL_CODE />
 <ENCODER_TYPE_DESC />
 <OUTPUT_RATE />
 <FRAME_RATE />
 <FILE_NAME />
 <FILE_SIZE />
 <COPY_DATE />
 <ADVERTISER />
 <AGENCY_VENDOR />
 </TryXML>

1
或者里面可能有这样的值

<TryXML xmlns="">
<TryXML_XML_VERSION>1.0</TryXML_XML_VERSION>
<TITLE_DESC>asd</TITLE_DESC>
<ISCI_CODE>asd</ISCI_CODE>
<PRODUCT_DESC>sd</PRODUCT_DESC>
<PLAY_LENGTH>asdklgh</PLAY_LENGTH>
<START_TIME>sdghkl</START_TIME>
<COMPRESSION_LEVEL_CODE />
<ENCODER_TYPE_DESC />
<OUTPUT_RATE />
<FRAME_RATE />
<FILE_NAME>sdfgjkl</FILE_NAME>
<FILE_SIZE />
<COPY_DATE />
<ADVERTISER>sdfgklj</ADVERTISER>
<AGENCY_VENDOR>sdfgjkl</AGENCY_VENDOR>
</TryXML>

1
自闭症
自闭症
sd
asdklgh
sdghkl
sdfgjkl
sdfgklj
sdfgjkl

如何检查所述XML节点是否具有值?注意:值可以是任何字母数字。

假设您使用的是SQL Server,则可以使用
值:

declare @t table (col1 xml)
insert @t values ('<root><a>val</a></root>')
insert @t values ('<root><a></a></root>')
insert @t values ('<root><a/></root>')
insert @t values ('<root></root>')

select  *
from    @t
where   col1.value('(/root/a)[1]','varchar(50)') <> ''

< P>如果问题是如何识别(和区分)“NULL”字段和空字符串的字段,则应该考虑重新设计数据库表和导出脚本:

1) 在数据库表中引入“null”-字段

(二)

  • 如果某个字段的值为“null”,则根本不导出此字段

  • 如果一个字段有一个空字符串,请将其导出,就像您现在所做的那样


我可以在案例语句中使用此选项,并将其与IS NOT NULL进行比较吗?当然可以,示例已添加到answerLife saver中。谢谢你:)+1
select  case 
        when col1.value('(/root/a)[1]','varchar(50)') is null then 'Null' 
        else 'Not Null' 
        end
from    @t