0

我有一个 LinqDataSource。此数据源从 SQL Server 中的一个表中读取,该表包含一个名为 ID 的字段,该字段的类型为 CHAR。某些记录在此字段中有空白,我想将其过滤掉。“空白”不是 NULL 也不是空字符串。

使用 T-SQL,此子句无法正确过滤记录:

WHERE Employee_ID <> ''

...虽然这个成功:

WHERE ASCII(Employee_ID) <> 0

现在我的问题是,如何在设计模式下配置 LinqDataSource 以按字段的 ASCII 值进行过滤,或者我如何过滤以使这些记录不返回?

这是数据源的标记:

 <asp:LinqDataSource ID="LinqDataSourcePersonnel" runat="server" ContextTypeName="exc009p.Owner_SummariesDataContext"
    EntityTypeName="" TableName="Personnels" Select='new(Employee_ID, Employee_Name, Employee_Title, (Employee_ID + " " + Employee_Name + " - " + Employee_Title) as employeeIDNameTitle)'
    OrderBy="Employee_Name, Employee_ID" Where="Employee_ID != @Employee_ID">
    <WhereParameters>
        <asp:Parameter DefaultValue="&quot;&quot;" Name="Employee_ID" Type="String" />
    </WhereParameters>
</asp:LinqDataSource>
4

1 回答 1

0

我相信您的问题的根源是您的列中有不可打印的字符(制表符、CR、LF 等......)当您查询运行时,结果看起来像一个空白,但实际上它有一个不可打印的字符。

我认为最好的粗略操作是验证数据(在应用程序中)以确保仅将有效字符插入此列。这将防止您必须使用 make shift 过滤器。

如果您无法更改数据或验证数据,我可能会尝试这样的事情,因为它是 SARGable(可用于索引搜索)

select *
from MyTable
WHERE employee like '[a-z0-9]%'
于 2013-08-02T16:59:19.447 回答