mysql基础知识理解和sql题讲解分析面试实战(四)之函数讲解和字符串的操作
- 函数的创建
- 字符串函数的操作
用例 查询表road 下的roadname的紧挨着第一个括号的是大写字母或数字的记录
创建表
CREATE TABLE `road` (
`id` int(10) NOT NULL,
`roadname` varchar(20) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
插入数据
创建函数
用mysql下创建需添加
注意:mysql 安装后默认函数是关闭的 查看创建函数的功能是否开启: mysql> show variables like '%func%'; +-----------------------------------------+-------+ | Variable_name | Value | +-----------------------------------------+-------+ | log_bin_trust_function_creators | ON | +-----------------------------------------+-------+ 1 row in set (0.02 sec) 如果Value处值为OFF,则需将其开启。 mysql> set global log_bin_trust_function_creators=1;
delimiter $$
CREATE FUNCTION isNumandupzimu(s1 varchar(16))
RETURNS TINYINT
-- 当然要以delimiter 结束
在nabvicat下创建
BEGIN
DECLARE result int DEFAULT 0;-- 0是假的
IF ISNULL(s1) then return 0; end if;
if s1 ='' then return 0;end if;
SELECT s1 REGEXP BINARY'^[0-9A-Z]+$' into result; -- REGEXP默认也是不区分大小写,需使用BINARY关键词强制区分大小
-- 查询
-- SELECT s1 REGEXP '^[0-9]+$' into result2;
if result =1 then return 1; -- 1 是真的
else return 0;
end if;
END
- 注意 if 后面没有括号,if 后结束要紧跟 end if
执行查询
- select INSTR('西三环(S)','('); -- instr()可以查出'(' 在字符串的哪个位置,记住mysql是以1开始计数的
- select SUBSTR('西三环(S)',4+1,1); -- substr(str,pos,len) 可以查出字符串从那个位置到哪个位置的 返回的是子字符串 ,从第5位开始包括第5位,第5位是一个长度
- select* from road where isNumandupzimu(SUBSTR(roadname,INSTR(roadname,'(')+1,1)) = 1;-执行结果
结论
- 该章让你可以掌握自定义函数和函数的调用
- 对字符串函数的基本掌握
- QQ大数据交流群:181666459
来源:oschina
链接:https://my.oschina.net/u/1444819/blog/650684