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

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

新規登録して質問してみよう
ただいま回答率
85.50%
MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

Q&A

2回答

3191閲覧

SQLで半角20文字の抽出の方法

退会済みユーザー

退会済みユーザー

総合スコア0

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

SQL

SQL(Structured Query Language)は、リレーショナルデータベース管理システム (RDBMS)のデータベース言語です。大きく分けて、データ定義言語(DDL)、データ操作言語(DML)、データ制御言語(DCL)の3つで構成されており、プログラム上でSQL文を生成して、RDBMSに命令を出し、RDBに必要なデータを格納できます。また、格納したデータを引き出すことも可能です。

0グッド

0クリップ

投稿2018/12/15 09:13

編集2022/01/12 10:55

前提・実現したいこと

下記テーブルのHINMEIから半角で20文字(全角は10文字)を抽出したいと考えています。
半角20文字を抽出するためにはバイト単位で20バイト抽出すればいいと考えています。
どのようにすれば取得できるでしょうか。

例(下記データが入っている場合)
①.テスト品名テスト品名
②.testHinmeitestHinmei
③.テスト品名testHinmei

該当のソースコード

【テーブル】
カラム名  データ型
HINMEI  VARCHAR(30)

【データ】
①.テスト品名テスト品名テスト品名テスト品名テスト品名
②.testHinmeitestHinmeitestHinmei
③.テスト品名testHinmeiテストHinmei

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

MYSQL
(文字コードutf-8)

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

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

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

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

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

guest

回答2

0

力技しか思いつきませんが、テーブル名が仮にSHOUHINとして

SQL

1SELECT CAST(CAST(SUBSTRING(CAST(CAST(SHOUHIN.HINMEI AS char CHARACTER SET sjis) AS BINARY),1,20) AS CHAR CHARACTER SET sjis) AS CHAR CHARACTER SET utf8) FROM SHOUHIN;

一旦Shift JISにして、さらに文字コードにかかわらずバイト単位でSUBSTRINGが処理されるようBINARYにキャストして、それをSUBSTRINGして、もう一度Shift JISの文字列にして、utf-8に戻すとできるかと。
効率はどうでしょうね。アプリ側がなにかは分かりませんが、取得後にアプリで処理した方が簡単な気もします。


追記
ちなみに上記、テーブルの文字コードがutf-8と仮定した場合ですが、仮にもともとsjisで、sjisで取得できればいいなら、単にBINARYに変換してSUBSTRINGして再度文字列に戻す、でできると思います。質問内容にテーブルの文字コードを明記してもらえますか?

投稿2018/12/16 04:25

編集2018/12/16 04:32
mks

総合スコア80

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

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

退会済みユーザー

退会済みユーザー

2018/12/16 09:14

文字コードを追加しました。 ご対応方法で一度試してみます。 ありがとうございます。
guest

0

投稿2018/12/15 10:13

Orlofsky

総合スコア16415

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

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

退会済みユーザー

退会済みユーザー

2018/12/15 10:23

提案方法だと半角全角関係なく文字数分取得するように見えます。 例で上げた③もそれで実装可能なのでしょうか。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問