私は本当に何をすべきか正確にはわかりません。私はSQLに少し慣れていません。substring
私の場合はorを使用する必要がreplace
ありますか?
DB に「email」というフィールドがあり、「email.com」で終わるすべてのメールを「email.org」に編集したいと考えました。何をすればよいでしょうか?
私は本当に何をすべきか正確にはわかりません。私はSQLに少し慣れていません。substring
私の場合はorを使用する必要がreplace
ありますか?
DB に「email」というフィールドがあり、「email.com」で終わるすべてのメールを「email.org」に編集したいと考えました。何をすればよいでしょうか?
それはあなたが何をする必要があるかによって異なります。replace
値を置き換えたいので使用できます:
select replace(email, '.com', '.org')
from yourtable
次にUPDATE
、新しいエンディングでテーブルに移動するには、次を使用します。
update yourtable
set email = replace(email, '.com', '.org')
電子メール値の最後の 4 文字を確認することで、これを拡張することもできます。
update yourtable
set email = replace(email, '.com', '.org')
where right(email, 4) = '.com'
ただし、問題は、メールの最後の場所だけでなく、他の場所にある可能性がreplace()
あることです。.com
したがってsubstring()
、次の方法を使用することをお勧めします。
update yourtable
set email = substring(email, 1, len(email) -4)+'.org'
where right(email, 4) = '.com';
デモで SQL Fiddle を参照してください
を使用substring()
すると、最終値なしでメール値の開始が返され、最後.com
に連結.org
されます。これにより、文字列内の他の場所の置換が防止.com
されます。
またはstuff()
、 を使用することもできます。これにより、削除と挿入の両方を同時に実行できます。
update yourtable
set email = stuff(email, len(email) - 3, 4, '.org')
where right(email, 4) = '.com';
これにより、最後の文字の前の 3 文字目の位置 (最後の の開始位置) の 4 文字が削除され、代わりに.com
挿入されます。.org
この方法についても、SQL Fiddle with Demoを参照してください。
あなたはただ使うことができますREPLACE
:
UPDATE myTable SET emailCol = REPLACE(emailCol, '.com', '.org')`.
ただし、次のような電子メール アドレスを考慮しjohn.comrad@some.company.com
てjohn.orgrad@some.organy.org
ください。
より安全な側に置きたい場合は、 を使用して最後の 4 文字を確認し、代わりに手動で にRIGHT
追加.org
する必要があります。末尾の大文字と小文字を区別しない検索を行うために をSUBSTRING
使用していることに注意してください。UPPER
.com
UPDATE myTable
SET emailCol = SUBSTRING(emailCol, 1, LEN(emailCol)-4) + '.org'
WHERE UPPER(RIGHT(emailCol,4)) = '.COM';
このSQLFiddleで動作することを確認してください。
.com
like john.comrad@email.com
toを含む更新名を回避するには、次のようにしjohn.orgrad@email.org
ます。
UPDATE Yourtable
SET Email = LEFT(@Email, LEN(@Email) - 4) + REPLACE(RIGHT(@Email, 4), '.com', '.org')
このクエリを試してください。レコードが.comで終わるように変更されます
UPDATE tablename SET email = replace(email, '.com', '.org') WHERE email LIKE '%.com';