2017-01-25 6 views
0

Oracleをmysqlに移行しようとしています。Oracleをmysqlに移行

質問1.

Instr('aa bb cc', ' ', -1,1) 

私は

6 

を返す。しかし、私は

Instr('aa bb cc', ' ', -1, 2) 
でクエリを作成する方法がわからない、両方

CHAR_LENGTH('aa bb cc') - LOCATE(' ', REVERSE('aa bb cc'))+1 

それを変更10

質問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クエリに変更しますか?研究として

答えて

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 
0

あなたのようMYSQLにINSTRを使用することができます:あなたは、スペースを除去することにより、長さの取得このINSTR()

を参照することができ

Set @col = "sample"; 
select INSTR(@col,"le") 

select LENGTH((replace(@col," ","")))