首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Mysql 查询某个字段中是否包某个字符串的几种函数及对比

在工作中,有时候,我们会遇到这种需求,比如 ,批量修改某个字段的数据值,这个字段又是字符串且这些字符串都包含指定特殊的字符串,这个时候怎么办呢?...如下: 我们需要,在sys_pid字段,批量添加mm_xxx_这个值,而且sys_pid字段有个特点,就是:都包含了 359950439_值。...分析: 一:查询a表中,sys_pid字段包含359950439_的所有数据。 二:在字段前添加mm_xxx_ 1:查询包含359950439_的所有数据怎么查询?...a where position('359950439_' in sys_pid); 其中,1.2不能查询,其他的四种都可以查询。...CONCAT(string1,string2,…)   说明 : string1,string2代表字符串,concat函数在连接字符串的时候,只要其中一个是NULL,那么将返回NULL    例1:

5.2K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL性能优化(二):选择优化的数据类型

    如果查询中的字段值恰巧是设置的NULL值,对MySQl来说更难优化,因为可为NULL的字段使得索引、值比较都更复杂。 NULL值不能进行索引,影响索引的统计信息,影响优化器的判断。...二、字符串类型 字符串类型是数据库中使用频率最高的数据类型,VARCHAR和CHAR是两种最主要的字符串类型,都可以用来存储字符串,但它们保存和检索的方式不同。...('xcbeyond '); Query OK, 3 rows affected Records: 3 Duplicates: 0 Warnings: 0 奇怪的事情发生了,当我们查询时,会发现第三个字符串末尾的空格被自动截断了...实战演示验证说明如下: 1)创建测试表text_test,字段id和context的类型分别为int(11)和text: mysql> create table text_test(id int(11)...当选择唯一标识符的类型时,不仅仅需要考虑存储类型,还需要考虑MySQL对这种类型怎么执行计算和比较的,因为比较在SQL查询中使用最多,而且也是制约性能的最大因素。

    1.4K00

    【Mysql】通过实验掌握Mysql基本操作

    在发布之前,先跟着我把Mysql的基本操作一起敲一遍吧~ Here we go ~ Part.1 基本操作 基本操作 1、连接数据库 mysql -h ip -u root ip password ?...7、查询当前数据库中的表 show tables ? 8、查看表结构 desc tablename,可以查看字段名,字段类型等信息 ?...13、where语句的使用: ? 14、limit 查询 先手工插入多行数据: ? 从第1行开始,查询2行(数据库第一行为第0行) ? 查询前4行: ?...Part.3 Information_schema 数据库 元数据库 在Mysql数据库5.0版本中存在着一个元数据库information_schema,其中存放着用户在Mysql中创建的所有其他数据库的信息...3、查看student数据表中有哪些字段 ? Part.4 一些奇怪的测试 测试 1、数字型参数可被当作字符型进行查询 id为 int类型参数,正常查询: ? 当作字符串进行查询,依然可以: ?

    91520

    MySQL 类型转换时:为什么索引有时会失效,有时又有效

    本文将简要阐述 MySQL 中的类型转换规则,以及 为什么在某些情况下索引会失效,而在另一些情况下索引仍然有效。 MySQL 的类型转换规则 数据类型优先级:数值类型优先于字符串类型。...示例: SELECT '123' = 123; -- 结果为 1 SELECT 'abc' = 0; -- 结果为 1 类型转换对索引的影响 情况一:字段为 INT,查询使用 STRING 示例:...情况二:字段为 STRING,查询使用 INT 示例: SELECT * FROM users WHERE username = 123; 类型转换:username 列的值被转换为数值。...MySQL 优化器行为: 在列上进行的任何函数或转换都会导致索引失效,因为索引基于列的原始数据构建。 如何确保索引有效使用? 数据类型匹配: 在查询中使用与列类型一致的常量值。...使用 EXPLAIN 检查查询计划,确认索引的使用情况。 通过理解 MySQL 的类型转换规则和索引机制,我们可以编写更高效的 SQL 查询,避免索引失效导致的性能问题。

    31910

    MySQL把字符串转化为数字的三种方式

    问题出现 当我用navicat查询时,在varchar字段上where查询使用的是int类型的0【忘记打引号了…】,结果查出一堆其他的字符串,很奇怪。...首先,我想到的是类似于between and,我以为也是比较的首字母,不过后面我发现并不是的。 百度搜素之后发现是在这查询的时候MySQL把字符串转化为数字,并且有几种方式: 1....方法一: 字段值 + 0 MySql 会根据上下文自动转换类型,这里会将被本来是字符类型的字段值以数值型返回,如果字段存放的值为数值字符,则会转换为数值型返回,如果字段存放的值为字母或者汉字,则直接返回...,且里面全是数字(但是在储存的时候是varchar类型),问:如何进行排序?...用法:CAST ( 字段名 AS 转换的类型 ) select * from city ORDER BY CAST(gdp AS SIGNED) ASC # 查询结果如下 4 深圳 980 1 北京

    26K41

    MySQL基础『数据类型』

    int, 无符号整型 int unsigned ); mysql> desc testINT; 注意: MySQL 中创建无符号类型,是在类型之后加上 unsigned 括号中的数字通常用于指定显示宽度...mysql> desc testBIT; 再分别向其中插入一些数据,查询时却看到了一些奇怪字符 mysql> insert into testBIT values (1, 3, 100), (0, 2...,查询时可以使用 hex() 这个内置函数将查询结果转为十六进制显示 mysql> select hex(位字段类型_1), hex(位字段类型_2), hex(位字段类型_8) from testBIT...; 向表中插入字符串 注:在 MySQL 中使用 ‘ ' 或者 " " 括起来的为字符串 mysql> insert into testChar values ('a'), ('bb'), ('战'),...定长的意思是:直接开辟对应好的空间 变长的意思是:在不超过自定义范围的情况下,用多少开辟多少 5.时间和日期 5.1.DATE 在 MySQL 中,日期表示 年月日,通过 date 类型表示,占用 3

    22010

    MySQL 使用 order by limit 分页排序会导致数据丢失和重复!

    然而,编写一些 SQL 语句,总会出现一些奇怪的问题。 问题 最近在项目中遇到一个很神奇的问题,MySQL 使用 order by 进行排序并进行分页的时候,会出现部分数据丢失和重复。...,并按 sort 字段排序, 仔细看我用红色标记出来的,可以发现,分类11 的数据在分页后查询不出来,而分类18 则出现了两次。...很明显的发现,当进行数据分页时,部分数据出现了丢失和重复。 分析原因 在 MySQL 关系型数据库中,往往会存在多种排序算法。...通过 MySQL 的源码和官方文档介绍可以得知,它的排序规律可以总结如下: 当 order by 不使用索引进行排序时,将使用排序算法进行排序; 若排序内容能全部放入内存,则仅在内存中使用快速排序; 若排序内容不能全部放入内存...方案一:降低 MySQL 版本为 5.5 或更低版本。此方案不推荐,数据库版本一般是指定的,降低数据库版本工作量较大。 方案二:在 order by 排序字段里,添加有索引的字段,比如主键ID。

    6.3K30

    Mysql 架构和索引

    字段类型选择 慷慨是不明智的 在相关的表中使用相同的数据类型,因为可能进行join 选择标示符:整数通常是最佳选择,尽量避免使用字符串 大致决定数据类型(数字,字符串,时间等) 选择存储更小的类型,选择更简单的类型...确定特定类型 varchar(字节数) 变长字符串 varchar内容开头用1到2个字节表示实际长度(长度超过255时需要2个字节),因此最大长度不能超过65535 5.0之后的mysql对其读写都会保留末尾空格...由于只有一行记录,在余下的优化程序里该行记录的字段值可以被当作是一个恒定值。const表查询起来非常快,因为只要读取一次!...Scan, MySQL将遍历全表以找到匹配的行 possible_keys 指出MySQL能使用哪个索引在表中找到行,查询涉及到的字段上若存在索引,则该索引将被列出,但不一定被查询使用 key 显示MySQL...在查询中实际使用的索引,若没有使用索引,显示为NULL key_len 表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度, 此值可以告诉你在联合索引中mysql会真正使用了哪些索引 key_len

    1.4K90

    MySQL面试高频100问(工程师方向)

    索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引. 3....那么在哪些情况下会发生针对该列创建了索引但是在查询的时候并没有使用呢? 使用不等于查询, 列参与了数学运算或者函数 在字符串like时左边是通配符.类似于'%aaa'....总之,在数据量大一些的情况下,用自增主键性能会好一些....MyBatis中的# 乱入了一个奇怪的问题…..我只是想单独记录一下这个问题,因为出现频率太高了. # 会将传入的内容当做字符串,而有什么区别?...∗∗乱入了一个奇怪的问题.....我只是想单独记录一下这个问题,因为出现频率太高了.#会将传入的内容当做字符串,而会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

    57520

    MySQL命名、设计及使用规范--------来自标点符的《MySQL命名、设计及使用规范》

    3、所有表、字段均应用 comment 列属性来描述此表、字段所代表的真正含义,如枚举值则建议将该字段中使用的内容都定义出来。...、如无备注,排序字段order_id在程序中默认使用降序排列; 12、整形定义中不添加长度,比如使用INT,而不是INT[4] INT[M],M值代表什么含义?...13、使用VARBINARY存储大小写敏感的变长字符串 什么时候用CHAR,什么时候用VARCHAR? CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。...所以,在OFFSET数值较大时,MySQL的查询性能会非常低。...拆分大字段和访问频率低的字段,分离冷热数据 行为规范 批量导入、导出数据必须提前通知DBA协助观察 禁止在线上从库执行后台管理和统计类查询 禁止有super权限的应用程序账号存在 产品出现非数据库导致的故障时及时通知

    5.7K20

    MySQL DBA面试高频三十问

    索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引. 3、Hash索引和B+树所有有什么区别或者说优劣呢...使用不等于查询, 列参与了数学运算或者函数 在字符串like时左边是通配符.类似于'%aaa'. 当mysql分析全表扫描比使用索引快的时候不使用索引....总之,在数据量大一些的情况下,用自增主键性能会好一些....事实上我们经常会为了性能而妥协数据库的设计. 9、MyBatis中的# 乱入了一个奇怪的问题…..我只是想单独记录一下这个问题,因为出现频率太高了. # 会将传入的内容当做字符串,而有什么区别?...∗∗乱入了一个奇怪的问题.....我只是想单独记录一下这个问题,因为出现频率太高了.#会将传入的内容当做字符串,而会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

    2.9K31

    大佬整理的mysql规范,分享给大家

    所有表、字段均应用 comment 列属性来描述此表、字段所代表的真正含义,如枚举值则建议将该字段中使用的内容都定义出来。...建议使用INT UNSIGNED存储IPV4。 尽可能不使用TEXT、BLOB类型 禁止在数据库中使用VARBINARY、BLOB存储图片、文件等。...使用VARBINARY存储大小写敏感的变长字符串 什么时候用CHAR,什么时候用VARCHAR? CHAR和VARCHAR类型类似,但它们保存和检索的方式不同。...所以,在OFFSET数值较大时,MySQL的查询性能会非常低。...拆分大字段和访问频率低的字段,分离冷热数据 行为规范 批量导入、导出数据必须提前通知DBA协助观察 禁止在线上从库执行后台管理和统计类查询 禁止有super权限的应用程序账号存在 产品出现非数据库导致的故障时及时通知

    1.1K20

    MySQL面试高频一百问

    索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引. 3....那么在哪些情况下会发生针对该列创建了索引但是在查询的时候并没有使用呢? 使用不等于查询, 列参与了数学运算或者函数 在字符串like时左边是通配符.类似于'%aaa'....总之,在数据量大一些的情况下,用自增主键性能会好一些....MyBatis中的# 乱入了一个奇怪的问题…..我只是想单独记录一下这个问题,因为出现频率太高了. # 会将传入的内容当做字符串,而有什么区别?...∗∗乱入了一个奇怪的问题.....我只是想单独记录一下这个问题,因为出现频率太高了.#会将传入的内容当做字符串,而会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

    80520

    MySQL 简介

    关键字 INT 是 INTEGER 的同义词,关键字 DEC 是 DECIMAL 的同义词。 BIT 数据类型保存位字段值,并且支持 MyISAM、MEMORY、InnoDB 和 BDB 表。...注意:如果 DATETIME 类型的值没有时间部分,默认时间为 00:00:00。时间日期比较可以用 = 号。 date 和 datetime 在插入的时候可以用 NOW() 函数。...字符串类型 字符串类型指 CHAR、VARCHAR、BINARY、VARBINARY、BLOB、TEXT、ENUM 和 SET。 字符串类型支持单引号和双引号包裹,建议用 单引号 包裹更加规范。...的数据(起始位和结束位占去了3个字节),也就是说,在 5.0.3 以下版本中需要使用固定的 TEXT 或 BLOB 格式存放的数据可以在高版本中使用可变长的 varchar 来存放,这样就能有效的减少数据库文件的大小...(3)text: 与 char 和 varchar 不同的是,text 不可以有默认值,其最大长度是 2 的 16 次方-1 总结起来,有几点: 经常变化的字段用 varchar 知道固定长度的用 char

    59610

    MySQL常见面试题总结

    索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引. 3....为什么需要注意联合索引中的顺序? MySQL可以使用多个字段同时建立一个索引,叫做联合索引.在联合索引中,如果想要命中索引,需要按照建立索引时的字段顺序挨个使用,否则无法命中索引....那么在哪些情况下会发生针对该列创建了索引但是在查询的时候并没有使用呢? 使用不等于查询, 列参与了数学运算或者函数 在字符串like时左边是通配符.类似于’%aaa’....MyBatis中的# 乱入了一个奇怪的问题…..我只是想单独记录一下这个问题,因为出现频率太高了. 会将传入的内容当做字符串,而有什么区别?...∗∗乱入了一个奇怪的问题…..我只是想单独记录一下这个问题,因为出现频率太高了.#会将传入的内容当做字符串,而会直接将传入值拼接在sql语句中. 所以#可以在一定程度上预防sql注入攻击.

    42110

    ES系列之一文带你避开日期类型存在的坑

    当时有个实体对象要写入ES中,我用了fastjson转换成json的字符串然后写入ES。在ES查看的时候发现写入的字段变成了Long型失去了日期的属性,导致不能根据此字段进行日期相关的条件搜索。...这两段的意思是说,在ES内部默认使用UTC时间并且是以毫秒时间戳的long型存储的。针对日期字段的查询其实对long型时间戳的范围查询。...我们举一个例子,很多时候我们会把mysql的数据同步的ES,方法很多,我这里以用logstash迁移数据举例。...如果你的mysql里的时间不是UTC而是东八区的时间,可以用如下的配置: input { jdbc { jdbc_driver_class => "com.mysql.jdbc.Driver...还有一种解决方案是你存储的时间字符串本身就带有时区信息,比如 “2016-07-15T12:58:17.136+0800”。 我们在ES进行查询或者聚合的时候,建议指定时区避免产生意想不到的结果。

    6.9K30
    领券