7

MYSQL で最後に出現した部分文字列を空白文字列に置き換えるにはどうすればよいですか?MYSQL でそのような直接関数を見つけることができませんでした

文字列: "American Corp National Corp"

検索文字列: "Corp"

期待される出力: "American Corp National"

誰でも提案できますか?

4

8 に答える 8

7

これは短くて読みやすいです:

SELECT TRIM(TRAILING 'Corp' FROM 'American Corp National Corp')
于 2014-04-02T07:29:07.327 に答える
2

試す:

select reverse(concat(
               left(reverse('American Corp National Corp'),
                    instr(reverse('American Corp National Corp'),reverse('Corp'))-1),
               substr(reverse('American Corp National Corp'),
                      instr(reverse('American Corp National Corp'),reverse('Corp'))+
                      length('Corp')))) result

( SQLフィドル)

于 2013-03-21T09:25:05.147 に答える
0

これはひどい方法のように感じますが...文字列、を使用して検索文字列reverseの最初の出現を検索し、反転されていない文字列にあるインデックスを計算しますか?reverselocate

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_reverse

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_locate

http://dev.mysql.com/doc/refman/5.0/en/string-functions.html#function_char-length (Unicode に準拠するには、長さの代わりにこれを使用する必要がありますが、念のために確認してください!)

作業例:

文字列: 0123456789 (char_length = 10)

検索文字列: 567 (char_length = 3)

逆文字列: 9876543210

逆引き検索文字列: 765

返品指数の特定 = 2

実際の文字列の末尾のインデックス = 7 (char_length(文字列) - 1 - インデックス -> 10 - 1 - 2)

実際の文字列の開始インデックス = 5 (char_length(文字列) - 1 - (char_length(検索文字列) - 1) - インデックス -> 10 - 1 - (3 - 1) - 2)

于 2013-03-21T09:10:36.350 に答える