0

電話番号のフィールドを持つテーブルがあります。左から 3 番目の数字の関数で「地区名」フィールドを更新する必要があります。

 UPDATE mytable
 SET districtname =
 CASE
    WHEN the3rdnumberfromleft = '8' THEN 'Mycountryname'
    ELSE ''
 END

その特定の位置の数字を読み取る条件を設定するにはどうすればよいですか?

4

2 に答える 2

1

LIKEMySqlでワイルドカード文字を使用できます

UPDATE mytable 
   SET districtname = 'yourDesiredName'
WHERE telephone LIKE '__8%'

説明:

__8%8左から3番目の番号を持つすべての電話番号と一致します。

意味が最初に(それぞれに1つずつ)任意の文字に一致する_前に2つの(アンダースコア)文字があることに注意してください8two

そして来る8のでそれはにのみ一致します8

そして、その後、%どの文字とも一致するという意味になります。

詳細については、このリンクを参照してください

于 2012-11-22T16:42:04.217 に答える
0

あなたの質問を正しく読んだ場合、テーブル内の行の一部のみを更新しようとしています。それが本当なら、これを試してください。

 UPDATE mytable 
    SET districtname = 'Mycountryname'
  WHERE SUBSTRING(LTRIM(telephone),3,1) = '8'

あなたが述べたように、これは8の行のみを選択します。電話番号の前にスペースがある可能性がある状況に対処するために、LTRIM を投入しました。すべての電話番号が左詰めであることが確実な場合は、その必要はありません。

電話番号が整数フィールドに格納されている場合でも、MySQL はユーザーが使用する整数を文字列であるかのように暗黙的に変換するため、これは機能します。

于 2012-11-22T16:22:40.080 に答える