gpt4 book ai didi

sql - LINQ 在查询中插入 'ESCAPE N' ~'

转载 作者:行者123 更新时间:2023-12-04 14:49:06 25 4
gpt4 key购买 nike

当我检查 Linq 发出的 SQL 查询时,我注意到它在执行 LIKE 命令时放置了一个 ESCAPE N'~'。我该如何摆脱这个?似乎查询花费的时间是 SQL 中 ESCAPE 的两倍。
这是 LINQ

var SearchPhrase = "xyz";

var result = (from i in db.myTable
where i.col1.contains(SearchPhrase)
select i).toList();
当我查看实际的 SQL 时,它看起来像这样:
   SELECT 
[Extent1].Col1
FROM myTable As [Extent1]
WHERE [Extent1].Col1 LIKE @p__linq__3 ESCAPE N'~'

最佳答案

显然,

var SearchPhrase = "xyz";
var result = (from I in db.myTabl
where i.col1.contains(SearchPhrase)
select I).toList();

将在底层查询中添加 ESCAPE N'~'。

但是,使用如下所示的常量过滤器不会在基础查询中产生转义字符
var result = (from I in db.myTabl
where i.col1.contains("xyz")
select I).toList();

这意味着,变量过滤器会被转义,而常量则不会。

因此,在这种情况下,我们需要一个变量用作常量过滤器。

使用以下内容,不应添加任何转义字符:
var SearchPhrase = "xyz";
var result = (from I in db.myTabl
where SqlMethods.Like(i.col1, string.Format("%{0}%", SearchPhrase))
select I).toList();

但这仅适用于 LINQ to SQL。

另一种选择是将变量值嵌入为常量,这是使用以下内容完成的,如 SO article 中所述。

关于sql - LINQ 在查询中插入 'ESCAPE N' ~',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28616733/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com