2012-06-27 63 views
-1

我有一个查询,基于提供的uniqueidentifier id选择一个表,所以当我提供Id的值,它返回的结果,但如果我通过它像下面我得到一个错误信息。请在这种情况下建议如何使用Convert或Cast来解决此问题。 感谢转换失败时,从字符串转换为uniqueidentifier

SELECT * FROM TBL WHERE ID='' 
+2

请显示您要转换的字符串的值。 'WHERE ID ='''是怎么说的? –

+2

你能否澄清;如果'ID'是一个'uniqueidentifier'类型的列,它可以是null,但它永远不能包含''''因此寻找它是毫无意义的 –

+0

是Id是一个uniqueidentifier类型的列,如果你输入上面的查询,我给了它提出错误。 – user1399377

回答

0

据对这个答案的意见,解决方案应该是这样的(伪代码):

if textbox1.Text.ToString().Equals('') { 
    SELECT * FROM TBL 
} 
else { 
    SELECT * FROM TBL WHERE ID='"+textbox1.text+"' 
} 

你可以做在C#应用程序的IF

+0

@JonEgerton我已经改变了我的答案。 –

+0

Actully我想我没有正确发布我的问题。以及场景是我有一个文本框在我的C#应用​​程序,它需要Id作为参数,所以我的查询就像SELECT * FROM TBL WHERE ID ='“+ textbox1.text +”'所以如果我不发送任何值的文本框和点击搜索按钮,它使我的查询如SELECT * FROM TBL WHERE ID =''。那是我的场景。请建议如何处理 – user1399377

+1

检查值是否为'''',如果是,请不要查询? –

2

假设@id是一个字符串参数,该ID列不能为空,你可以做这样一些愚蠢:

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

不过说真的,你应该通过NULL如果没有价值,而不是空字符串。这不应该是一个字符串参数。

相关问题