メインコンテンツに移動

メインナビゲーション

  • ホーム
  • サイトマップ
  • ビデオ
  • ご連絡

パンくず

  • ホーム
  • MySQLの関数(char_length)の漢字対応できない問題点と回避方法

MySQLの関数(char_length)の漢字対応できない問題点と回避方法

mysql
mysql

MySQLの関数(char_length)が漢字(マルティバイト文字)への対応がしていない

  • MySQLの関数(char_length)で文字列検索時に、マルティバイト文字(例:日本語、中国語、韓国語など)が対応していないです
    // 例:「text_field」が3文字数のレコードを取得します
    SELECT * FROM test_table WHERE char_length( text_field ) = 3
    • クエリの結果は「text_field」が2文字と3文字のレコードが混入しています
    • 検索結果は正しい時もあれば、正しくないときもあります

回避方法:関数(bit_length)の使用

  • もし、検索対応がすべて漢字の場合(半角の英数字がない)に、関数(bit_length)の利用はできます
  • DBの文字セットを特定し、一文字のbit数を換算します
    • UTF8:24bit
    • Shift-JIS, EUC:16bit
  • 上記3文字のレコードを検索する例では、関数(bit_length)の利用は以下のようです
    // 例:「text_field」の文字セット:UTF、3文字数(72bit)のレコードを取得します
    SELECT * FROM test_table WHERE bit_length( text_field ) = 72
  • 弱点:半角の英数字が混入した場合にこの関数(bit_length)の使用は難しいです
ホーム

古松

検索

Article Category

  • apache(7)
  • css(19)
  • drupal(295)
  • Electron(4)
  • html(34)
  • javascript(27)
  • laravel(4)
  • linux(5)
  • macOS(2)
  • mysql(13)
  • php(19)
  • python(4)
  • SEO(12)
  • video(72)
  • Visual Studio Code(4)
  • windows(13)
  • wordpress(32)