Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.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
Sql server 从字符串转换为uniqueidentifier时转换失败_Sql Server_Sql Server 2008_Tsql - Fatal编程技术网

Sql server 从字符串转换为uniqueidentifier时转换失败

Sql server 从字符串转换为uniqueidentifier时转换失败,sql-server,sql-server-2008,tsql,Sql Server,Sql Server 2008,Tsql,我有一个查询,它根据提供的uniqueidentifier Id选择一个表,所以当我向一个值提供Id时,它会返回结果,但如果我像下面这样传递它,我会收到一条错误消息。请建议在这种情况下如何使用Convert或Cast来解决此问题。 谢谢 根据对此答案的评论,在伪代码中,解决方案应该是这样的: if textbox1.Text.ToString().Equals('') { SELECT * FROM TBL } else { SELECT * FROM TBL WHERE ID=

我有一个查询,它根据提供的uniqueidentifier Id选择一个表,所以当我向一个值提供Id时,它会返回结果,但如果我像下面这样传递它,我会收到一条错误消息。请建议在这种情况下如何使用Convert或Cast来解决此问题。 谢谢


根据对此答案的评论,在伪代码中,解决方案应该是这样的:

if textbox1.Text.ToString().Equals('') {
    SELECT * FROM TBL
}
else {
    SELECT * FROM TBL WHERE ID='"+textbox1.text+"' 
}
您可以在C应用程序中执行IF操作。

假设@id是一个字符串参数,并且id列不可为null,您可以执行以下愚蠢的操作:

SELECT * FROM TBL WHERE ID = COALESCE(NULLIF(@id, ''), ID);

但实际上,如果没有值,而不是空字符串,则应该传递NULL。这首先不应该是字符串参数。

请显示要转换的字符串的值。ID=在哪里有什么意义?你能澄清一下吗;如果ID是uniqueidentifier类型的列,则它可以为null,但不能包含,因此查找它是无意义的。如果您在上面键入查询,则我给它一个错误。@user1399377它会引发错误,因为它试图将您搜索的空字符串转换为uniqueidentifier类型;没有办法做到这一点,uniqueidentifier要么为null,要么是一个完整的36个字符/16字节的jobby-look。在您的表中,没有空的ID字段,但要查找什么?uid的等价物是什么?如果您想查找uid,而您搜索的值不是uid,请不要在第一个位置进行搜索。事实上,我认为我没有正确地发布我的问题。这个场景是,我的c应用程序中有一个文本框,它将Id作为参数,因此我的查询类似于SELECT*FROM TBL,其中Id='+textbox1.text+',因此如果我没有在文本框中发送任何值,并单击搜索按钮,它会使我的查询类似于SELECT*FROM TBL,其中Id=。这就是我的设想。如果值为,请建议如何处理itCheck,如果是,请不要进行查询?是否有可能用户没有输入uniqueidentifier,而只是输入空字符串?那么您想要检索什么结果呢?那么@aF..这是唯一的解决方案吗???@user1399377它是正确的。它还避免了SQL调用,从而提高了性能。
SELECT * FROM TBL WHERE ID = COALESCE(NULLIF(@id, ''), ID);