关于EFCore对Mysql的支持 多字段拼接查询

本文是讨论EFCore对Mysql的支持问题

本文中测试使用的ORM为MySql.Data.EntityFrameworkCore 6.10.6版本

在系统中有一张表:crm.contacts 中包含了first_name和last_name两个字段

通常来说需要查询的时候 需要将这两个字段连接一起进行模糊查询

Mysql支持的sql语句为 select * from `crm.contacts` where concat(first_name, last_name)  like concat(‘%‘, ‘abc‘, ‘%‘)

如果在程序中使用dbcontext.CrmContacts.Where(s => (s.FirstName + s.LastName).Contains("abc")),

  由Nero Profile SQL 截获该ORM框架解析出来的SQL语句为 select * from `crm.contacts` where first_name+ last_name like concat(‘%‘, ‘abc‘, ‘%‘)

  Mysql并不支持上述的sql语句

如果在程序中使用dbcontext.CrmContacts.Where(s => string.Contat(s.FirstName + s.LastName).Contains("abc")),

  由Nero Profile SQL 截获该ORM框架解析出来的SQL语句为 select * from `crm.contacts`

ORM会获取该表的所有内容在内存中进行查询

但是在SQLServe中select * from [crm.contacts] where first_name+ last_name like ‘%abc%‘ 是可以被解析的 所以不存在这样的问题

原文地址:https://www.cnblogs.com/Zhangzhanhong/p/8473987.html

时间: 2024-07-29 18:36:00

关于EFCore对Mysql的支持 多字段拼接查询的相关文章

MySQL单表多字段模糊查询解决方法

在最近的一个项目需要实现在单表中对多字段进行多个关键字的模糊查询,但这数个关键字并不一定都存在于某个字段 例如现有table表,其中有title,tag,description三个字段,分别记录一条资料的标题,标签和介绍.然后根据用户输入的查询请求,将输入的字串通过空格分割为多个关键字,再在这三个字段中查询包含这些关键字的记录. 可目前遇到的问题是,这些关键字是可能存在于三个字段中的任意一个或者多个,但又要求三个字段必须包含所有的关键词.如果分别对每个字段进行模糊匹配,是没法实现所需的要求,由此

mysql和mariadb中字段拼接类型有两个或多个字段或者一个字段和一个固定字符串拼接

MySQL中concat函数 CONCAT(str1,str2,-) 1 .两个或多个字段连接 例:字段  a,b     表  tb1     语句:    select concat(a,b) from  tb1 2.字段和已有字符串连接 例: 字段  a    字符串  "bb"    表  tb2 语句:  select concat(a,'bb' ) from  tb2

.NetCore中EFCore for MySql整理(二)

一.简介 EF Core for MySql的官方版本MySql.Data.EntityFrameworkCore 目前正是版已经可用当前版本v6.10,对于以前的预览版参考:http://www.cnblogs.com/tianma3798/p/6940794.html 1.MySql的核心 安装 Install-Package MySql.Data.EntityFrameworkCore -Version 6.10.5 2.MySql的 生成工具安装 Install-Package MySq

mysql 多个字段拼接

Mysql的查询结果行字段拼接,能够用以下两个函数实现: 1. concat函数 mysql> select concat('1','2','3') from test ; +---------------------+ | concat('1','2','3') | +---------------------+ | 123 | +---------------------+ 假设连接串中存在NULL,则返回结果为NULL: mysql> select concat('1','2',NULL

MySQL批量替换指定字段字符串

MySQL批量替换是我们经常会用到的功能,有时站内包含敏感词,会给我们带来麻烦,而在信息量较大的情况下,一篇篇查找.修改是不现实的. 用MySQL批量替换,甚是轻松.发布在这里供参考,以备不时之需. MySQL批量替换指定字段字符串语句 UPDATE 数据表名 SET 字段名 = replace(字段名, '要替换的字符串', '替换为') WHERE 设定条件; 比如本站今天发现站内关于linux命令的文章 标题不是太好,以前都是以 linux下mkdir命令使用详解---linux创建目录命

mysql中的null字段值的处理及大小写问题

在MySQL中,NULL字段的处理,需要注意,当在处理查询条件中有NULL,很有可能你得到的值不是想要的,因为,在MySQL中,判断NULL值相等(=)或者不等(!=)都会返回false.主要出现在常见的SELECT以及WHERE字句中. 为了处理这种特殊的情况,MySQL提供了如下的关键字进行特殊处理: IS NULL: 当列的值是NULL,此运算符返回true. IS NOT NULL: 当列的值不为NULL, 运算符返回true. <=>: 比较操作符(不同于=运算符),当比较的的两个值

mysql怎么储存长字符-----MySQL text与blob字段类型的不同之处

字段类型选text型 或blog 区别见: 以下的文章主要介绍的是MySQL text与blob字段类型的不同之处的比较,同时本文也有对MySQL text与blob字段类型的实际应用的介绍,如果你对MySQL text与blob字段类型相关的实际操作有兴趣的话,你就可以对以下的文章点击观看了. 1. blob是二进制大对象,可以容纳可变量数量的数据,其中blob分为4中类型:TINYBLOB,BLOB,mediumblob和LongBlob,他们容纳的长度是不同的. Text同样也分为四种类型

sql server 2000 单主键高效分页存储过程 (支持多字段排序)

sql server 2000 单主键高效分页存储过程 (支持多字段排序) Create PROC P_viewPage             /*              nzperfect [no_mIss] 高效通用分页存储过程(双向检索) 2007.5.7  QQ:34813284              敬告:适用于单一主键或存在唯一值列的表或视图              ps:Sql语句为8000字节,调用时请注意传入参数及sql总长度不要超过指定范围            

PHP获取mysql数据表的字段名称和详细信息的方法

首先我们需要了解下查询MySQL数据库/表相关信息的SQL语句: 代码如下: SHOW DATABASES                                //列出 MySQL Server 数据库.SHOW TABLES [FROM db_name]                    //列出数据库数据表.SHOW CREATE TABLES tbl_name                    //导出数据表结构.SHOW TABLE STATUS [FROM db_na