trim()
trim()函数用来过滤指定的字符串。
完整格式:TRIM([{BOTH | LEADING | TRAILING} [remstr] FROM] str)
删除指定情况下str
中的remstr
。若没有指定情况,默认删除str
前后空格。
经测试发现,trim()函数只能用来删除前后数据。
BOTH 删除指定的首尾字符
SELECT TRIM(BOTH 'a' FROM 'aaababccaa');
# 输出:'babcc'
LEADING 删除指定的首字符
SELECT TRIM(LEADING 'a' FROM 'aaababccaa');
# 输出:'babccaa'
TRAILING删除指定的尾字符
SELECT TRIM(TRAILING 'a' FROM 'aaababccaa');
# 输出:'aaababcc'
无条件,删除前后空格
SELECT TRIM(' aaababccaa ');
# 输出:'aaababcc'
MySQL中也可以使用LTRIM,RTRIM
函数删除左或右空格
LTRIM函数去除左空格
SELECT LTRIM(' aaababccaa');
# 输出:'aaababccaa'
RTRIM函数去除右空格
SELECT RTRIM('aaababccaa ');
# 输出:'aaababccaa'
instr()
格式一:instr( string1, string2 ) / instr(源字符串, 目标字符串)
格式二:instr( string1, string2 [, start_position [, nth_appearance ] ] ) / instr(源字符串, 目标字符串, 起始位置, 匹配序号)
解析:
格式一:在string1中查找string2,返回string2出现的第一个位置(index)。index是从1开始计算,如果没有找到就直接返回0,没有返回负数的情况。
格式二:在string1中查找string2,是从start_position给出的数值(即:位置)开始在string1检索,检索第nth_appearance(几)次出现string2。从1开始计算,如果没有找到就直接返回0,没有返回负数的情况。
eg:
格式一
select instr('helloworld','l') from dual; --返回结果:3 默认第一次出现“l”的位置
select instr('helloworld','lo') from dual; --返回结果:4 即:在“lo”中,“l”开始出现的位置
select instr('helloworld','wo') from dual; --返回结果:6 即“w”开始出现的位置
格式二
select instr('helloworld','l',2,2) from dual; --返回结果:4 也就是说:在"helloworld"的第2(e)号位置开始,查找第二次出现的“l”的位置
select instr('helloworld','l',3,2) from dual; --返回结果:4 也就是说:在"helloworld"的第3(l)号位置开始,查找第二次出现的“l”的位置
select instr('helloworld','l',4,2) from dual; --返回结果:9 也就是说:在"helloworld"的第4(l)号位置开始,查找第二次出现的“l”的位置
select instr('helloworld','l',-1,1) from dual; --返回结果:9 也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第一次出现的“l”的位置
select instr('helloworld','l',-2,2) from dual; --返回结果:4 也就是说:在"helloworld"的倒数第1(d)号位置开始,往回查找第二次出现的“l”的位置
select instr('helloworld','l',2,3) from dual; --返回结果:9 也就是说:在"helloworld"的第2(e)号位置开始,查找第三次出现的“l”的位置
select instr('helloworld','l',-2,3) from dual; --返回结果:3 也就是说:在"helloworld"的倒数第2(l)号位置开始,往回查找第三次出现的“l”的位置
trim()和instr()函数结合使用
在实际场景中,根据用户输入的数据进行条件查询。例如,根据姓名模糊查询,用户在搜索框中输入的时候前后可能会带上空格,这个时候我们就可以使用trim()
函数去除用户输入数据的前后空格,然后使instr()
函数检索该输入数据在数据库中对应字段是否存在。
select * from user where instr(user_name,trim(#{userName})) > 0
使用trim()更新数据库
有一次我们发现,用户在通过Excel向系统中导入数据的时候,某些字段后面带上了空格,而数据已经导入数据库,可以使用trim()
更新数据库对应字段
UPDATE epc_carseries_configuration
SET car_year=trim(car_year),
displacement=trim(displacement),
transmission=trim(transmission),
drive_model=trim(drive_model),
interior_color=trim(interior_color),
country_area=trim(country_area),
config_name=trim(config_name);
网友评论