赞
踩
目录
SELECT * FROM user u force index(idx_user_id_update_time) where u.id=100 order by u.update_time
%通配符,_占位符
and order_no like '%1_'
匹配倒数第二位是1的任意订单号
- select CONCAT("123-", 456, '-ABC');
- ...where name like concat('%', #{param.name,jdbcType=VARCHAR}, '%');
- SELECT GROUP_CONCAT(name SEPARATOR ",") FROM user limit 10
- SELECT GROUP_CONCAT(name) FROM user limit 10
- SELECT GROUP_CONCAT(id, name) FROM user limit 10
select LENGTH('123456');
select LOWER('ABCoOpP');
select UPPER('abcqwer');
select TRIM(' abcq wer ');
在MySQL中,可以使用
CAST
或CONVERT
函数将字符串转换为数字。下面是使用这两个函数的示例:
使用CAST
函数:
SELECT CAST('1234' AS SIGNED) AS number;
使用CONVERT
函数:
SELECT CONVERT('1234', SIGNED) AS number;
ps 请确保字符串能够正确地转换为数字,否则可能会导致错误。
在MySQL中,可以使用
REPLACE
函数来替换字符串。REPLACE
函数接受三个参数:原始字符串、要查找的字符串和要替换的字符串。
SELECT REPLACE('Hello, World!', 'World', 'Universe');
这将输出
Hello, Universe!
,它将原始字符串中的World
替换为Universe
。
还可以将
REPLACE
函数与列名一起使用,以在数据库表中替换字符串。例如,假设您有一个名为users
的表,其中包含一个名为
UPDATE users SET email = REPLACE(email, 'old.com', 'new.com');
这将更新
users
表中的所有行,将电子邮件地址中的"old.com"替换为"new.com"。请注意,
REPLACE
函数是大小写敏感的。如果要执行不区分大小写的替换操作,可以使用REPLACE
函数之前先使用LOWER
或UPPER
函数将字符串转换为小写或大写。
- select SUBSTRING('123456', 3);
- -- 3456
- select SUBSTRING('123456', 3, 2);
- -- 34
- SELECT SUBSTR('Hello World', 2, 5);
- --<ello >
-
- # 这里的SUBSTR函数中,第一个参数是待截取字符串,第二个参数是开始截取的位置,第三个参数是截取的长度。根据上面的语句,输出结果为“ello ”。
LEFT(str,length);
str
是要提取子字符串的字符串。length
是一个正整数,指定将从左边返回的字符数。
- LEFT函数和RIGHT函数
-
- SELECT LEFT('Hello World', 5);
- SELECT RIGHT('Hello World', 5);
-
- LEFT函数从字符串的左侧开始截取指定长度的字符;而RIGHT函数从字符串的右侧开始截取指定长度的字符。
- 因此第一个语句输出结果为“Hello”,第二个语句输出结果为“World”。
-
- SELECT SUBSTRING_INDEX('www.baidu.com', '.', 1);
- SELECT SUBSTRING_INDEX('www.baidu.com', '.', 2);
-
- 这里的SUBSTRING_INDEX函数用于按指定分隔符“.”截取字符串,并且可以指定截取第几个分隔符之前或之后的内容。第一个语句输出结果为“www”,第二个语句输出结果为“www.baidu”。
SELECT SUM(trade_amount) FROM order;
SELECT AVG(trade_amount) FROM order;
SELECT MAX(trade_amount) FROM order;
SELECT MIN(trade_amount) FROM order;
SELECT COUNT(trade_amount) FROM order;
- SELECT NOW();
- -- 2023-09-18 21:55:12
- SELECT DATE(NOW());
- -- 2023-09-18
- SELECT TIME(NOW());
- -- 21:55:52
- SELECT YEAR(NOW());
- -- 2023
- SELECT MONTH(NOW());
- -- 9
- SELECT DAY(NOW());
- -- 18
IF(condition, true_value, false_value)
- condition:要测试的条件表达式。
- true_value:如果条件为真,则返回此值。
- false_value:如果条件为假,则返回此值
- SELECT name, score, IF(score >= 90, '优秀', IF(score >= 70, '良好', IF(score >= 50, '及格', '不及格'))) as grade FROM students;
-
- UPDATE orders SET status = IF(total_price > 1000, '高价', '低价') WHERE id = 1;
- SELECT name,
- CASE
- WHEN age >= 18 THEN 'Adult'
- WHEN age >= 13 THEN 'Minor'
- ELSE 'Unknown'
- END as age_group FROM users;
-
- SELECT name,
- CASE age
- WHEN 18 THEN 'Adult'
- WHEN 13 THEN 'Minor'
- ELSE 'Unknown'
- END as age_group FROM users;
SELECT department, COUNT(*) as number_of_employees FROM table GROUP BY department
- SELECT department, COUNT(*) as number_of_employees FROM table
- GROUP BY department HAVING number_of_employees > 10;
- SELECT department, COUNT(*) as number_of_employees FROM table
- GROUP BY department ORDER BY number_of_employees DESC;
SELECT id, name FROM user limit 1, 10
- SELECT MD5('Hello World');
-
- -- b10a8db164e0754105b7a99be72e3fe5
- -- 生成一个 0 到 1 之间的随机浮点数:
- SELECT RAND();
- -- 0.07283980964947474
-
- -- 生成一个 100 到 200 之间的随机整数:
- SELECT FLOOR(100 + RAND() * 101);
- -- 187
语法:ROUND(number, decimals)
参数:
- number:要四舍五入的数字。
- decimals:小数点后的位数。如果为正数,则表示小数点后的位数;如果为负数,则表示小数点前的位数。
- SELECT version(); -- 结果为 5.7.40
-
- -- 将数字 123.4567 四舍五入到小数点后两位:
- SELECT ROUND(123.4567, 2); -- 结果为 123.46
-
- -- 将数字 12345 四舍五入到小数点前一位:
- SELECT ROUND(12345, -1); -- 结果为 12350
-
- SELECT ROUND(12345, 0); -- 结果为 12345
CEILING(number)
返回大于或等于给定数字的最小整数
- -- 返回大于或等于 5.6 的最小整数:
- SELECT CEILING(5.6); -- 返回 6
-
- -- 返回大于或等于 -3.1 的最小整数:
- SELECT CEILING(-3.1); -- 返回 -3
- -- 返回小于或等于 5.6 的最大整数:
- SELECT FLOOR(5.6); -- 返回 5
-
- -- 返回小于或等于 -3.1 的最大整数:
- SELECT FLOOR(-3.1); -- 返回 -4
MySQL的
EXISTS
函数用于测试子查询是否返回任何结果。如果子查询返回至少一行结果,EXISTS
函数返回TRUE
,否则返回FALSE
。语法:
EXISTS (subquery)
其中,
subquery
是一个子查询,它可以是任何有效的SQL查询。
- CREATE TABLE customers (
- customer_id INT PRIMARY KEY,
- customer_name VARCHAR(50)
- );
-
- CREATE TABLE orders (
- order_id INT PRIMARY KEY,
- customer_id INT,
- order_date DATE,
- FOREIGN KEY (customer_id) REFERENCES customers(customer_id)
- );
-
- -- 是否存在至少一个订单
- SELECT EXISTS (SELECT 1 FROM orders);
- -- 下过单的用户
- SELECT * FROM customers cus where EXISTS (SELECT 1 FROM orders o where o.customer_id = cus.customer_id);
提升数据库性能的关键所在!Mysql执行计划解析-CSDN博客
Mysql 触发器-两个数据库的表数据同步-步骤与问题解决_两个mysql数据库实现其中两张表 增量同步脚本如何编写-CSDN博客
MySQL语法、UNION合并查询结果集 一条数据拆分成多条和查询结果中增加一个自定义字段_union语句拆分多个查询汇总-CSDN博客
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。