質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

Q&A

解決済

1回答

6742閲覧

SQLite3 SQL文で半角全角どちらもヒットさせたい

odataiki

総合スコア938

C#

C#はマルチパラダイムプログラミング言語の1つで、命令形・宣言型・関数型・ジェネリック型・コンポーネント指向・オブジェクティブ指向のプログラミング開発すべてに対応しています。

SQLite

SQLiteはリレーショナルデータベース管理システムの1つで、サーバーではなくライブラリとして使用されている。

0グッド

1クリップ

投稿2021/07/07 08:37

前提・実現したいこと

  • SQLite3 のSQL文で半角・全角を無視してSelectしたいです。

(例)下記のようなテーブル

  • テーブル名:D_Menu
IdName
01リブステーキ
02サーロインステーキ
03いきなりステーキ
04赤ワイン
  • 発行するSQL文

sql

1SELECT * FROM D_Menu WHERE LIKE '%ステーキ%'
  • 期待する結果
IdName
01リブステーキ
02サーロインステーキ
03いきなりステーキ
  • 実際の結果
IdName
01リブステーキ

(全角しかヒットしていない)

  • →半角、全角どちらもヒットして欲しい

試したこと

  • SQLiteのテーブルのCollationを色々いじってみましたが変化なし

(BINARY,NOCASE,RTRIM,UTF16,UTF16CI)

補足情報(FW/ツールのバージョンなど)

  • sqlite_version() = 3.32.2

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2021/07/07 09:39

SQLite はやめて SQL Server に代えて照合順序を Japanese_CI_AS にするなんてのは無しですか?
odataiki

2021/07/07 10:13

ご回答ありがとうございます。 今回はSQLiteが条件の為、SQL-Serverを使うことはありません。 SQL Serverだと簡単にできるので SQLiteでなかなか出来ず苦労しております。
退会済みユーザー

退会済みユーザー

2021/07/07 10:22

WHERE Name LIKE '%ステーキ%' OR Name LIKE '%ステーキ%' で何とかするとか?
odataiki

2021/07/07 11:11

ご回答ありがとうございます。 提案頂いた方法だと全角・半角が入り混じった文字列の検索が出来なくて・・・ ```ステーキ``` ← こういう文字もヒットさせたい 引き続き調べていましたらMicrosoftのサイトで解決出来ました。 色々考えて頂きましてありがとうございました。
guest

回答1

0

自己解決

色々調べていたら自己解決出来ました。

https://docs.microsoft.com/ja-jp/dotnet/standard/data/sqlite/user-defined-functions
上記URLより

csharp

1connection.CreateFunction( 2 "toWide",(string x) => 3 Microsoft.VisualBasic.Strings.StrConv(x, Microsoft.VisualBasic.VbStrConv.Wide, 0x411)); 4 5var command = connection.CreateCommand(); 6command.CommandText = 7@" 8 SELECT * 9 FROM D_Menu 10 WHERE toWide(Name) LIKE '%ステーキ%' 11";

半角を一旦全角に変換して、全角文字で部分一致検索
で期待した結果が得られました。

投稿2021/07/07 11:12

odataiki

総合スコア938

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問