
以下のクエリを実行しました。
insert into test_tbl(aaa,bbb,ccc) values('xx','yy','△△');
※====『△』は半角スペース====
それで以下のsqlを実行すると
select count(*) from test_tbl where ccc = '△△';
---
1
---
と出ます。それで今度は以下のSQLを記述すると
select count(*) from test_tbl where ccc = '△';
---
1
---
とでます。
因みにテーブル構成は
--------------
aaa char(2)
bbb char(2)
ccc char(2)
--------------
です。
どうしてインサートしたデータが"△△"なのに
"△"でひっかかるのでしょうか?
しつこいようですが、記述中の'△'は半角スペースです。
A 回答 (4件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
比較の前に、'△' が char(2)-型に暗黙的に型変換されるからだと思います。
リテラルの '△' は、char(2)-型の ccc と比較される前に char(2)-型に型変換されて '△△' になり、それから ccc と比較されるのではないでしょうか?
No.3
- 回答日時:
ANo#1の方と同じくDBによると思いますが、
Oracleの場合、SQL*Plusでご質問のようなことを行うと、
同じ結果になります。
SQL*Plusの方で ' '(空白1つ) の場合に、' '(空白2つ)と補完しているのか
なんなのかわかりませんが、とにかく' ' でも ' ' でも同じ結果になります。
ただし、JDBCなど他のミドルウェアを使用して検索を行った場合は、
' ' のみひっかかります。' 'ではひっかかりません。
No.1
- 回答日時:
DBはなんでしょう?それにもよる気がしますが・・・。
今、手元にあるのはAccess2kとSQL Serverですが、Accessには
char型がないので、SQL Serverだったと仮定すると・・・。
Char型の場合はchar(2)とした場合、"A"を代入しても"A "と
格納されてしまいますね。もし"A"を代入して"A"と格納されて
欲しい場合は、varchar(2)とするなどしたら良いのでは?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
accsessで顧客コードで氏名を呼...
-
帳票フォームでのあるコンボボ...
-
CSVファイルでテキストの改行の...
-
DocuWorksでの印刷
-
旧filemakerで和暦(令和など)...
-
テキストボックスにコントロー...
-
sqlite(spatialite_gui)での...
-
顧客データベースを作る場合、...
-
汎用カード型のデータベースソ...
-
20万行あるデータを動かしたい
-
はじめてのAccess 2019 について
-
ファイルメーカーへネットワー...
-
警察はスマホに保存した動画や...
-
更新クエリをリンクデータベー...
-
manana というやつで、間違って...
-
データ復旧にかかる時間
-
googleフォームでインストール...
-
最新の日付とその金額をクエリ...
-
エクセルのフィルタ抽出が固まる
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
2つの列からの最大値取得
-
joinの場合のテーブル名の別名...
-
SQLで期間をずらした集計処理
-
複数行の結果を単一列に連結
-
PostgreSQL で自動採番する方法
-
SQLのこと:distinctして並び替...
-
order byで並び変えし最大値の...
-
SQLで2年連続で値が上昇した年...
-
CREATE VIEWについて
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
フラグをたてるってどういうこ...
-
sqlに記述できない文字
-
truncate tableを使って複数の...
-
オラクルのUPDATEで複数テーブル
-
既存データをINSERT文にして出...
-
副問合せを使わずにUNIONと同様...
-
SQLで、Join句で結合したテ...
-
UPDATEで既存のレコードに文字...
-
PostgreSQLのtimestamp型で時間...
おすすめ情報