我正在尝试将oracle迁移到mysql。
问题1。
Instr('aa bb cc', ' ', -1,1)
我改变了它
CHAR_LENGTH('aa bb cc') - LOCATE(' ', REVERSE('aa bb cc'))+1
都返回
6
但我不知道如何使用
进行查询Instr('aa bb cc', ' ', -1, 2)
问题2。
这是oracle查询。
CASE WHEN Regexp_like(
REPLACE(SUBSTR(TRIM(col), INSTR(TRIM(col), ' ', -1,1),
(LENGTH(TRIM(col)) - INSTR(TRIM(col), ' ',-1, 1))
+ 1), ' ',
''),
'[0-9|0-9\-]') THEN
REPLACE(SUBSTR(TRIM(col), INSTR(TRIM(col), ' ', -1, 2),
(INSTR(TRIM(col), ' ', -1, 1) - INSTR(TRIM(col), ' ', -1, 2)
) +
1), ' ', '') END
如何将查询更改为mysql查询?
答案 0 :(得分:1)
MySQL也有instr()函数,但它的功能少于Oracle
ora :: Instr('aa bb cc', ' ', -1, 1) ==
my :: length('aa bb cc') - length(substring_index('aa bb cc', ' ', -1))
ora :: Instr('aa bb cc', ' ', -1, 2) ==
my :: length('aa bb cc') - length(substring_index('aa bb cc', ' ', -2))
MySQL也使用(因此无需更改):
CASE WHEN value THEN do-something END
MySQL替换:
REPLACE(str, from, to)
https://dev.mysql.com/doc/refman/5.7/en/string-functions.html#function_replace
其他问题应该完全相同。
REGEXP_LIKE
https://docs.oracle.com/cd/B12037_01/server.101/b10759/conditions018.htm
regexp(source_string, pattern, match_parameter)
https://dev.mysql.com/doc/refman/5.7/en/pattern-matching.html
source_string REGEXP pattern
答案 1 :(得分:0)
作为一项研究,您可以在MYSQL中使用INSTR,如:
Set @col = "sample";
select INSTR(@col,"le")
您可以参考此INSTR()
通过删除空格来获取长度:
select LENGTH((replace(@col," ","")))