C# 检查数据库中的字符串值
我在比较字符串值时遇到了一个奇怪的问题。我在SQL中有一个类型为(nchar)的值,该值等于“text”。我将这个值设置为字符串变量x,然后将字符串变量x与单词“text”进行比较 问题是,它显示x不等于值“text”,即使我将x值添加到标签时,它也会显示单词“text” 这是我的密码:C# 检查数据库中的字符串值,c#,sql,asp.net,C#,Sql,Asp.net,我在比较字符串值时遇到了一个奇怪的问题。我在SQL中有一个类型为(nchar)的值,该值等于“text”。我将这个值设置为字符串变量x,然后将字符串变量x与单词“text”进行比较 问题是,它显示x不等于值“text”,即使我将x值添加到标签时,它也会显示单词“text” 这是我的密码: string x; using (SqlCommand cmd = new SqlCommand( "select column from text_table where column = '
string x;
using (SqlCommand cmd = new SqlCommand(
"select column from text_table where column = 'text'", sqlCon))
{
using (SqlDataReader reader = cmd.ExecuteReader())
{
if (reader.Read())
{
x = reader["column"].ToString();
if (x.Equals("text"))
{
// run code
}
else
{
label1.Text ="x doesn't equal text";
}
当我使用代码时,它总是显示消息“x不等于text”,但它应该运行代码,因为字符串x的值是“text”始终使用
.Equals()
方法和StringComparison.OrdinalIgnoreCase
将代码更改为
if(x.Equals("text",StringComparison.OrdinalIgnoreCase){
//Do something
}
始终将
.Equals()
方法与StringComparison.OrdinalIgnoreCase
将代码更改为
if(x.Equals("text",StringComparison.OrdinalIgnoreCase){
//Do something
}
您已经使用了“nchar”列类型,它具有恒定的长度。我不确定,但在比较之前修剪可能会解决你的问题
试一试
还有一个错误,我认为:(if(stat.Equals(“text”)
)中没有“x”。您使用了“nchar”列类型,它具有恒定的长度。我不确定,但是在比较之前修剪可以解决您的问题
试一试
还有一个Bug,我认为:(if(stat.Equals(“text”)
)中没有“x”。演示:
create table text_table (
col1 nchar(10) ); -- fixed length column
insert text_table(col1) values ('text');
注意col1+'1'表达式
select col1, col1+'1'
from text_table
where col1 = 'text'
发生了什么?sql server实际上忽略了尾随空格,例如
select 'OK' where 'text' = 'text ';
返回“OK”。
但是c#不会忽略尾随空格和if
不正确。
怎么办?
在比较之前,在db或trim db列中使用Nvarchar
,并使用String.trim()
。演示:
create table text_table (
col1 nchar(10) ); -- fixed length column
insert text_table(col1) values ('text');
注意col1+'1'表达式
select col1, col1+'1'
from text_table
where col1 = 'text'
发生了什么?sql server实际上忽略了尾随空格,例如
select 'OK' where 'text' = 'text ';
返回“OK”。
但是c#不会忽略尾随空格和if
不正确。
怎么办?
在比较之前,在db或trim db列中使用
Nvarchar
,并使用String.trim()
。如果您也提供表值的代码,那么如何读取表值将非常有用!!!!@marcelo我做了检查,检查代码nchar
是固定长度的列。检查尾部空格“”。如果您同时提供表格值的代码,您如何读取表格值将非常有用!!!!@marcelo我做了检查代码nchar
是固定长度的列。检查尾部空格“”.我这样做了,但还是一样issue@anatermj那么你的x
值是错误的。检查你从数据库中得到的信息。我做了这些,但仍然是一样的issue@anatermj那么,您的x
值是错误的。请检查从数据库i added.Trim()中获得的信息;它对我有效,谢谢,但我有个问题,如果我用varchar代替。Trim();?不。在这种情况下,你不需要修剪结果。我添加了。Trim();它对我有效,谢谢,但我有个问题,如果我用varchar代替。Trim();?不。在那种情况下,你不需要修剪结果。