将oracle迁移到mysql

时间:2017-01-25 02:21:10

标签: mysql oracle

我正在尝试将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查询?

2 个答案:

答案 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," ","")))