如何使用文本框搜索功能 return 同一列中的空值和值
How to return the null values and value within the same column by using textbox search function
只是一个简短的问题。我已经尝试了很多可能性来获取日期列中的空值和值,例如使用 ISNULL、NULL、0,但返回 0 结果。我不知道如何编程以从创建日期获取空值。
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
FillDates();
}
}
private void FillDates()
{
txtDateS.Text = DateTime.Now.ToString("01-01-yyyy");
txtDateE.Text = DateTime.Now.ToString("12-31-yyyy");
}
private string ConvertDate(Object obj)
{
if (obj is DateTime)
{
return ((DateTime)obj).ToString("dd-MM-yyyy");
}
else
{
return obj.ToString();
}
}
protected void AddRowItem(StringBuilder sb, SqlDataReader reader, int index)
{
sb.Append("<tr><td>").Append(index).Append("</td>");
sb.Append("<td>").Append(ConvertDate(reader[0])).Append("</td>");
sb.Append("</tr>");
}
protected int DoItemList(SqlConnection connection, StringBuilder sb, string DateS, string DateE, string filter)
{
string sql = "";
SqlCommand readCommand = null;
SqlDataReader reader = null;
int count = 0;
try
{
string itemFilter = DoFilter(filter);
sql = "SELECT v.[Code] FROM [CAS].[dbo].[Van] v WHERE v.[Created_DateTime]>='" + DateStart + "' and b.[Created_DateTime]<='" + DateEnd + "';
readCommand = new SqlCommand(sql, connection);
reader = readCommand.ExecuteReader();
while (reader.Read())
{
count++;
AddRowItem(sb, reader, count);
}
reader.Close();
}
catch (Exception e)
{
//
}
return count;
}
我要在文本框中输入的网站
<div>
<asp:Label id="Label1" runat="server" Width="100px">Date From:</asp:Label>
<asp:TextBox id="txtDateS" runat="server" Width="184px"></asp:TextBox><br />
<br/>
<asp:Label id="Label2" runat="server" Width="100px">Creation date from:</asp:Label>
<asp:TextBox id="txtDateE" runat="server" Width="184px"></asp:TextBox><br />
<asp:Button id="cmdRun" runat="server" Width="91px" Height="24px" Text="Run" onclick="cmdRun_Click"></asp:Button>
<asp:Label id="lblStatus" runat="server"></asp:Label>
<hr noshade>
</div>
结果输出
Code
Creation date
A0001
2018-08-12
A0002
null
为了进一步说明,Created_DateTime 可以有空值。因此,当我使用文本框按 Created_DateTime 进行过滤时,它仅显示 Created_DateTime 不为空的值。例如。对于开始日期,我输入 2021-01-30,结束日期我输入 2021-12-30。它只显示带有 Created_DateTime 的行,但当存在空值 Created_DateTime.
时则不显示
根据您的评论,您似乎总是想要return记录NULL
Created_DateTime
。在这种情况下,这就是您的做法。
SELECT v.Code
FROM dbo.Van v
WHERE (
v.Created_DateTime >= @DateStart
-- When dealing with dates that are stored as datetime and could therefore have an accidental time component
-- its safer to use less than a day in the future
AND v.Created_DateTime < DATEADD(DAY, 1, CONVERT(DATE,@DateEnd))
)
OR v.Created_DateTime IS NULL;
请注意,我向您展示了您应该 使用的查询,它使用参数而不是字符串连接。因为字符串连接让你对 SQL 注入开放。
只是一个简短的问题。我已经尝试了很多可能性来获取日期列中的空值和值,例如使用 ISNULL、NULL、0,但返回 0 结果。我不知道如何编程以从创建日期获取空值。
protected void Page_Load(object sender, EventArgs e)
{
if (!this.IsPostBack)
{
FillDates();
}
}
private void FillDates()
{
txtDateS.Text = DateTime.Now.ToString("01-01-yyyy");
txtDateE.Text = DateTime.Now.ToString("12-31-yyyy");
}
private string ConvertDate(Object obj)
{
if (obj is DateTime)
{
return ((DateTime)obj).ToString("dd-MM-yyyy");
}
else
{
return obj.ToString();
}
}
protected void AddRowItem(StringBuilder sb, SqlDataReader reader, int index)
{
sb.Append("<tr><td>").Append(index).Append("</td>");
sb.Append("<td>").Append(ConvertDate(reader[0])).Append("</td>");
sb.Append("</tr>");
}
protected int DoItemList(SqlConnection connection, StringBuilder sb, string DateS, string DateE, string filter)
{
string sql = "";
SqlCommand readCommand = null;
SqlDataReader reader = null;
int count = 0;
try
{
string itemFilter = DoFilter(filter);
sql = "SELECT v.[Code] FROM [CAS].[dbo].[Van] v WHERE v.[Created_DateTime]>='" + DateStart + "' and b.[Created_DateTime]<='" + DateEnd + "';
readCommand = new SqlCommand(sql, connection);
reader = readCommand.ExecuteReader();
while (reader.Read())
{
count++;
AddRowItem(sb, reader, count);
}
reader.Close();
}
catch (Exception e)
{
//
}
return count;
}
我要在文本框中输入的网站
<div>
<asp:Label id="Label1" runat="server" Width="100px">Date From:</asp:Label>
<asp:TextBox id="txtDateS" runat="server" Width="184px"></asp:TextBox><br />
<br/>
<asp:Label id="Label2" runat="server" Width="100px">Creation date from:</asp:Label>
<asp:TextBox id="txtDateE" runat="server" Width="184px"></asp:TextBox><br />
<asp:Button id="cmdRun" runat="server" Width="91px" Height="24px" Text="Run" onclick="cmdRun_Click"></asp:Button>
<asp:Label id="lblStatus" runat="server"></asp:Label>
<hr noshade>
</div>
结果输出
Code | Creation date |
---|---|
A0001 | 2018-08-12 |
A0002 | null |
为了进一步说明,Created_DateTime 可以有空值。因此,当我使用文本框按 Created_DateTime 进行过滤时,它仅显示 Created_DateTime 不为空的值。例如。对于开始日期,我输入 2021-01-30,结束日期我输入 2021-12-30。它只显示带有 Created_DateTime 的行,但当存在空值 Created_DateTime.
时则不显示根据您的评论,您似乎总是想要return记录NULL
Created_DateTime
。在这种情况下,这就是您的做法。
SELECT v.Code
FROM dbo.Van v
WHERE (
v.Created_DateTime >= @DateStart
-- When dealing with dates that are stored as datetime and could therefore have an accidental time component
-- its safer to use less than a day in the future
AND v.Created_DateTime < DATEADD(DAY, 1, CONVERT(DATE,@DateEnd))
)
OR v.Created_DateTime IS NULL;
请注意,我向您展示了您应该 使用的查询,它使用参数而不是字符串连接。因为字符串连接让你对 SQL 注入开放。