mysql查询语法记录

mysql中查询字符串长度:

length:   是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符

CHAR_LENGTH(str) 返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。对于一个包含五个二字节字符集, LENGTH()返回值为 10,而 CHAR_LENGTH()的返回值为5。

CHARACTER_LENGTH(str) CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。

BIT_LENGTH(str) 返回2进制长度.

例如:可以查出用户名长度少于6个字符的用户列表。

SQL代码:

SELECT * FROM admin WHERE LENGTH(username) < 6

CHAR_LENGTH(str)

返回值为字符串str 的长度,长度的单位为字符。一个多字节字符算作一个单字符。对于一个包含五个二字节字符集, LENGTH()返回值为 10,而CHAR_LENGTH()的返回值为5。

CHARACTER_LENGTH(str)

CHARACTER_LENGTH()是CHAR_LENGTH()的同义词。

BIT_LENGTH(str)

返回2进制长度.

简单的总结来说,mysql中获取字符串长度的有两个函数:

length:返回字符串所占的字节数,是计算字段的长度一个汉字是算三个字符,一个数字或字母算一个字符

char_length:返回字符串所占的字符数,不管汉字还是数字或者是字母都算是一个字符

mysql中更新时 追加字符串: 

update 表名 set 列名=concat(列名, '追加的字符串');

截取字符串:

函数:

1、从左开始截取字符串

left(str, length)

说明:left(被截取字段,截取长度)

例:select left(content,200) as abstract from my_content_t

2、从右开始截取字符串

right(str, length)

说明:right(被截取字段,截取长度)

例:select right(content,200) as abstract from my_content_t

3、截取字符串 

substring(str, pos)

substring(str, pos, length)

说明:substring(被截取字段,从第几位开始截取)

substring(被截取字段,从第几位开始截取,截取长度)

例:select substring(content,5) as abstract from my_content_t

select substring(content,5,200) as abstract from my_content_t

(注:如果位数是负数 如-5 则是从后倒数位数,到字符串结束或截取的长度)

4、按关键字截取字符串

substring_index(str,delim,count)

说明:substring_index(被截取字段,关键字,关键字出现的次数)

例:select substring_index("blog.jb51.net","。",2) as abstract from my_content_t

结果:blog.jb51

(注:如果关键字出现的次数是负数 如-2 则是从后倒数,到字符串结束)

函数简介:

SUBSTRING(str,pos) , SUBSTRING(str FROM pos) SUBSTRING(str,pos,len) , SUBSTRING(str FROM pos FOR len)

不带有len 参数的格式从字符串str返回一个子字符串,起始于位置 pos。带有len参数的格式从字符串str返回一个长度同len字符相同的子字符串,起始于位置 pos。

使用 FROM的格式为标准 SQL 语法。也可能对pos使用一个负值。假若这样,则子字符串的位置起始于字符串结尾的pos 字符,而不是字符串的开头位置。在以下

格式的函数中可以对pos 使用一个负值。

mysql中查询语句中 使用到类型转换

Cast函数;CONVERT函数。

用法:CAST(expr AS type), CONVERT(expr,type) , CONVERT(expr USING transcoding_name).

SELECT CONVERT('abc' USING utf8);

将varchar 转为Int 用 cast(str as unsigned) str为varchar类型的字符串 。

比如常用的百分比转换:

select cast((1/3)*100 as UNSIGNED) as percent from dual;

result: 33

MySQL类型转换函数参数 : CAST(xxx AS 类型) , CONVERT(xxx,类型)

这个类型 可以是以下值其中的 一个:

BINARY[(N)]

CHAR[(N)]

DATE

DATETIME

DECIMAL

SIGNED [INTEGER]

TIME

UNSIGNED [INTEGER]

整数 : SIGNED

无符号整数 : UNSIGNED

二进制,同带binary前缀的效果 : BINARY

字符型,可带参数 : CHAR()

日期 : DATE

时间: TIME

日期时间型 : DATETIME

浮点数 : DECIMAL

BINARY str 是CAST(str AS BINARY)的缩略形式:

来源:http://blog.csdn.net/wanghui19931015/article/details/54016117

时间: 2024-10-06 13:32:11

mysql查询语法记录的相关文章

MySQL查询重复记录sql语句

常用的语句 1.查找表中多余的重复记录,重复记录是根据单个字段(mail_id)来判断  代码如下 复制代码  SELECT * FROM table WHERE mail_id IN (SELECT mail_id FROM table GROUP BY mail_id HAVING COUNT(mail_id) > 1); 2.删除表中多余的重复记录,重复记录是根据单个字段(mail_id)来判断,只留有rowid最小的记录  代码如下 复制代码 DELETE FROM table WHER

防止mysql重复插入记录的方法_Mysql

防止mysql重复插入记录的方法有很多种,常用的是ignore,Replace,ON DUPLICATE KEY UPDATE,当然我们也可以在php中加以判断了. 方案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用: 代码如下: 复制代码 代码如下: INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('test9@163.com'

select-mysql 查询语法有单引号,但是我的where条件也有单引号,怎么解?

问题描述 mysql 查询语法有单引号,但是我的where条件也有单引号,怎么解? 比如select * from t where name like '%a's%'这种情况 解决方案 两个单引号 select * from t where name like '%a''s%' 解决方案二: select * from t where name = 'test''abc'; 解决方案三: 不是,是我的条件是 name=test'abc这种 解决方案四: SQL WHERE 子句中的单引号sql

关于mysql查询差值的方法

问题描述 关于mysql查询差值的方法 当前我有表test,字段id,click,share 我的需求是 算出同一id,click数最大的click和share,减去click第二大的click和share 解决方案 分析: 从题主描述的字段值猜测,这是一个类似于"热帖排序"的问题,id并不是我们通常认为的主键id,而是关联到帖子的外键.click值在排序上高于share值,因此先看click再看share,通过两者的一个加权值取得排序结果. 对于题主所描述的直接需求,个人意见是先li

mysql查询语句,怎么让数据库中为NULL的记录查询处理显示为不存在

问题描述 mysql查询语句,怎么让数据库中为NULL的记录查询处理显示为不存在 mysql查询语句,怎么让数据库中为NULL的记录查询处理显示为不存在 解决方案 select (case when name is null then '不存在' else name end) as name,id from user 这种sql不建议使用,虽然能让你暂时实现逻辑, 但是会大大影响MySQL的性能.所以不建议使用, 最好是在自己的代码里处理这些东西.(其他的数据库除外) 解决方案二: 这个不是sq

mysql 开启慢查询 如何打开mysql的慢查询日志记录_Mysql

mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里有很耗费资源的sql语句,那如何打开mysql的慢查询日志记录呢? 其实打开mysql的慢查询日志很简单,只需要在mysql的配置文件里(windows系统是my.ini,linux系统是my.cnf)的[mysqld]下面加上如下代码: 复制代码 代码如下: log-slow-queries=/var/lib/mysql/slowquery.log long_query_time=2 注: log-slow-queries

MySQL启用慢查询日志记录方法

在MySQL中,慢查询的界定时间是由MySQL内置参数变量long_query_time来指定的,其默认值为10(单位:秒),我们可以通过show variables like 'long_query_time';指令来查看该参数变量的信息: long_query_time的默认值为10秒 不过,在程序开发过程中,我们认为慢速查询的界定时间并没有10秒这么长,依据不同项目的不同需求,我们一般将慢查询的界定时间设定为1~5秒之间.我们可以使用指令set long_query_time = 秒数来设

php查询mysql数据表记录实现代码

$hostname="localhost";         //定义连接到的mysql服务器名 $username="root";          //定义用于连接的用户名 $password="";           //定义用于连接的密码 $link=mysql_connect($hostname,$username,$password);   //打开msql连接 mysql_query('set names gb2312;');  

MySQL查询数据库中重复的记录几条sql

1.根据表中单个字段(name)来查询重复记录 SELECT * FROM user WHERE name IN ( SELECT name FROM user GROUP BY name HAVING COUNT(name) > 1 ); 2.根据表中单个字段(name),删除重复记录,只保留id最小的记录 DELETE FROM user WHERE name IN ( SELECT name FROM user GROUP BY name HAVING COUNT(name) > 1 )