プロが教える店舗&オフィスのセキュリティ対策術

isqlで

  カラムAAA  char(10)を

select substring(AAA,1,2) from テーブル名
としたときに出力結果が

 ----
11
12
13

というように出力が2文字指定でも余分に2文字ついて
計4文字で表示されます(後ろ2文字はスペース)
このプラス2文字を無くす方法をご存知の方がいらっしゃいましたら教えてください。

A 回答 (2件)

こんにちは。



substring関数は何文字目から何文字抜き取るという関数です。
カラム AAA char(10) に半角だけ入っているとは限りませんので全角文字を想定して半角4文字分で結果が出力されます。

----
11
ああ(※これも2文字です)
12

試しにsubstring(AAA,1,3)とやってみると倍の半角6文字分で出力されます。
代わりにconvert関数を使うとAAAカラムをchar(2)として
出力できます。

select convert(char(2),AAA) from テーブル名

--
11
12
13

という結果になります。

※当方SQLServer6.5です

この回答への補足

回答ありがとうございます。
substringの場合は理解できました。
ただ、
numaric(16,4)や(16,0)をconvertなしで出力したとき、
長さが19文字分で出力されるのは何故でしょうか?
numaric(16,4)なら整数部12と小数部4であとコンマの計17文字ですし、numaric(16,0)なら16文字になりますからそれぞれ+2、+3文字分プラスされています。

補足日時:2004/07/29 09:26
    • good
    • 0

rtrim 関数をつかうと余分な空白を取り除いてくれます。



(例) select rtrim(substring(AAA,1,2)) from テーブル名

# なぜ空白が付いてしまうのかは判りません・・・
# ベンダーサポートに問い合わせる方が良いかもしれません。

参考URL:http://www.microsoft.com/japan/msdn/library/defa …
    • good
    • 0
この回答へのお礼

rtrimで対処できました。ありがとうございます。

お礼日時:2004/08/02 16:46

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!