メインコンテンツに移動
ホーム

古松

メインナビゲーション

  • ホーム
  • ビデオ
  • ご連絡

パンくず

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

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

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)の使用は難しいです

検索フォーム

カテゴリ別

  • laravel
  • drupal
  • javascript
  • windows
  • html
  • mysql
  • php
  • apache
  • css
  • SEO
  • video
  • wordpress
  • linux
  • python
  • Electron
  • Visual Studio Code

google ads