No.1ベストアンサー
- 回答日時:
No.2
- 回答日時:
マニュアルを確認したところ、charの場合、検索時に後続の空白を消すことが明記されていますね。
また、varcharの場合は、後続に空白を入れた場合は、その空白は削除しないで検索されるようです。これは、標準SQLへの準拠のため、MySQL 5.0で変更したようです。
もし、後続に空白を入れた状態で格納や更新ができるなら、列のデータ型をvarcharに変えるのも一つの方法です。
charで後続の空白を含めて得るには、rpad関数で空白を補うような方法になってしまいます。
例えば、表=t1の列=c2、c3がcharだとすると、こんな感じです。
<SQL例1>
select
c1,
rpad(c2,8,' ') as c2,
rpad(c3,16,' ') as c3,
c4
from t1;
charの定義長を知るには、information_schemaのcolumns表を検索することで可能です。
例えば、データベース=test1のテーブル=t1の列の定義長を知りたい場合、こんな感じのSQLになります。
<SQL例2>
select
column_name,
data_type,
character_octet_length
from information_schema.columns
where table_schema='test1' and table_name='t1'
order by ordinal_position
;
rpad関数の長さ部分を自動で拾うには、<SQL例2>のSQLをサブクエリにして、<SQL例1>に入れ込む方法が考えられます。
また、単純にサブクエリで拾う場合、SQLが冗長になってしまうので、列の定義長を得るクエリをストアド・ファンクションにしてしまう方法もあります。
ストアド・ファンクションの定義例は、次のようになります。
<SQL例3>
delimiter //
create function CharLen
(DbName varchar(30), -- データベース名
TblName varchar(30), -- テーブル名
ClmName varchar(30)) -- カラム名
returns int
begin
declare wClmLen int;
select character_octet_length
into wClmLen
from information_schema.columns
where table_schema=DbName
and table_name=TblName
and column_name=ClmName;
return wClmLen;
end;
//
delimiter ;
このストアド・ファンクションを活用すれば、次のようなSQLになります。
<SQL例4>
select
c1,
rpad(c2,CharLen('test1','t1','c2'),' ') as c2,
rpad(c3,CharLen('test1','t1','c3'),' ') as c3,
c4
from t1;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) プログラミング python pandas 固定長データの出力 2 2022/08/16 11:22
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
- X(旧Twitter) ツイッターで、固定されたツイートの解除の仕方は? 1 2023/03/29 15:27
- MySQL mysqlで INSERT と SELECTの用途は 1 2022/04/01 00:45
- その他(暮らし・生活・行事) アロンアルファの痕と付着物を除去する方法を教えて下さい。 5 2023/08/09 22:28
- バイク車検・修理・メンテナンス xv400viragoのフォークシール交換について 4 2023/06/10 21:05
- PDF C#でfloatを整数部、小数部とも桁数固定で文字表示したい 2 2022/07/28 09:37
- 固定電話・IP電話・FAX 固定電話を止めてスマホだけに 固定電話、毎日かかって来るのはセールスばかり 親戚などは番号教えておく 3 2022/04/23 19:23
- Excel(エクセル) エクセルの数式で教えてください。 1 2023/02/08 09:05
- Visual Basic(VBA) データを製品別に集計 3 2022/09/11 21:17
関連するカテゴリからQ&Aを探す
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
MySQLのテーブルタイプの変更に...
-
一つ前に戻るには…
-
SQLで漢字名称を都道府県や市区...
-
まるいテーブル 円い 丸い 漢字...
-
オフ会の席替えについて(8人...
-
SQLあってますか?こう?
-
お金持ちのテーブル
-
【PHP】SQL文のSUM関数で出力し...
-
男性と2人で飲食店に行きテーブ...
-
L2SWはARPテーブルを持っている?
-
処理の途中で停止させ、再開さ...
-
【エクセル】データテーブルの...
-
少人数披露宴のテーブル
-
SQL 外部結合
-
妹が、メルカリで売れた商品を...
-
SQL文の結合(一対多)がわから...
-
複数のテーブルを参照するselec...
-
外部結合について
-
木のテーブルの輪染みが取れず...
-
ピグライフ、パーティーテーブ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一つ前に戻るには…
-
ビューに追加・削除が出来ません。
-
最大値を持つレコードを削除したい
-
mysqlでJOIN文
-
SQL文による残業時間の算出につ...
-
mysqlのフィールド名
-
SQL一発でカレンダー表示は可能...
-
副問い合わせの限界値はどれく...
-
1列について重複行を除いて全列...
-
矛盾していないでしょうか?
-
mysqlで外部キーをつけたカラム...
-
MySQLのFOREIGN KEYについて
-
SQLを教えてください
-
MySQLのテーブル設計について
-
PHP上のSQLで、SELECT文をいく...
-
【ストアドプロシージャ】条件...
-
char型データ 固定長のままでs...
-
プログラミングについて
-
他のDBにあるテーブル内容をcre...
-
売上管理
おすすめ情報