C# 检查数据库中的字符串值

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 = '

我在比较字符串值时遇到了一个奇怪的问题。我在SQL中有一个类型为(nchar)的值,该值等于“text”。我将这个值设置为字符串变量x,然后将字符串变量x与单词“text”进行比较

问题是,它显示x不等于值“text”,即使我将x值添加到标签时,它也会显示单词“text”

这是我的密码:

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();?不。在那种情况下,你不需要修剪结果。