C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[7]: SQLでお願いします


(過去ログ 21 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■9219 / inTopicNo.1)  SQLでお願いします
  
□投稿者/ あく (9回)-(2007/10/22(Mon) 12:25:30)

分類:[データベース全般] 

select '■' + test as test from testtable
■あああ
■いいい
ですが、下記ものが出るようにしたいんですがSQLだけでできますでしょうか?
@あああ
Aいいい

お願いいたします
引用返信 編集キー/
■9221 / inTopicNo.2)  Re[1]: SQLでお願いします
□投稿者/ Blue (351回)-(2007/10/22(Mon) 12:45:44)
2007/10/22(Mon) 12:46:00 編集(投稿者)

レコード数が20より多かったらどうするのでしょうか?

しかも、丸つき数字は機種依存文字と呼ばれる特殊な文字で、ある環境では文字化けしてしまうと思います。

参考
http://apex.wind.co.jp/tetsuro/izonmoji/

引用返信 編集キー/
■9225 / inTopicNo.3)  Re[2]: SQLでお願いします
□投稿者/ Mr.T (105回)-(2007/10/22(Mon) 14:05:30)
Mr.Tです、こんにちは。

> レコード数が20より多かったらどうするのでしょうか?
>
> しかも、丸つき数字は機種依存文字と呼ばれる特殊な文字で、ある環境では文字化けしてしまうと思います。
>
> 参考
> http://apex.wind.co.jp/tetsuro/izonmoji/

丸付き数字まで出したいわけではないような気もします。(え、釣られた?)
データベースがなんなのかどうかもわからんですが、
SQLServerで文字列抜出なら、Substringとか、Left、Rightとか、Replaceとか
で可能です。
Left('ABC' + [Hogeフィールド],2)→'AB'

ま、わざわざ結合しているんなら、結合していない部分のフィールドを選べばよい罠...

#しまった、そうか!
#Blueさん、そこまで考えて、わざわざ丸付き数字も欲しいんだろうと考えたのか!



引用返信 編集キー/
■9226 / inTopicNo.4)  Re[2]: SQLでお願いします
□投稿者/ あく (11回)-(2007/10/22(Mon) 14:10:49)
2007/10/22(Mon) 14:12:59 編集(投稿者)
No9221 (Blue さん) に返信
> 2007/10/22(Mon) 12:46:00 編集(投稿者)
>
> レコード数が20より多かったらどうするのでしょうか?
>
> しかも、丸つき数字は機種依存文字と呼ばれる特殊な文字で、ある環境では文字化けしてしまうと思います。
>
> 参考
> http://apex.wind.co.jp/tetsuro/izonmoji/

返信ありがとうございます。
レコード数が20より多かったらとはどういった意味でしょうか?

あと@とかでなくても1だけでも数字がでればそれだけでいいです。

すみません。SQLserver2000です
引用返信 編集キー/
■9228 / inTopicNo.5)  Re[3]: SQLでお願いします
□投稿者/ 夏椰 (2回)-(2007/10/22(Mon) 14:14:15)
夏椰 さんの Web サイト
>>レコード数が20より多かったらどうするのでしょうか?

とりあえず1件目〜20件目までは'@'〜’S’で21以降は(21)と()付き形式で表示するとしたら
こんな感じのSQLになると思います。
#SQLServer2005Expressで実行確認

select 
	case 
	when num < 20 then
		NCHAR(UNICODE('@') + num -1)
	else
		'(' + cast(num as varchar) + ')'
	end rownum
from 
(
	select row_number() over (order by num) as num from generate_series(0,20,1)
) t

rownum
========
@
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Q
R
(20)
(21)

引用返信 編集キー/
■9229 / inTopicNo.6)  Re[4]: SQLでお願いします
□投稿者/ あく (13回)-(2007/10/22(Mon) 14:16:51)
No9228 (夏椰 さん) に返信
> >>レコード数が20より多かったらどうするのでしょうか?
>
> とりあえず1件目〜20件目までは'@'〜’S’で21以降は(21)と()付き形式で表示するとしたら
> こんな感じのSQLになると思います。
> #SQLServer2005Expressで実行確認
>
> select
> case
> when num < 20 then
> NCHAR(UNICODE('@') + num -1)
> else
> '(' + cast(num as varchar) + ')'
> end rownum
> from
> (
> select row_number() over (order by num) as num from generate_series(0,20,1)
> ) t
>
> rownum
> ========
> @
> A
> B
> C
> D
> E
> F
> G
> H
> I
> J
> K
> L
> M
> N
> O
> P
> Q
> R
> (20)
> (21)

なるほど、丸付だと20以降がなかったんですか。
気がつきませんでした。
数字がでればそれでいいので、夏椰さんのコードを参考に作成してみます。

ありがとうございました。
解決済み
引用返信 編集キー/
■9239 / inTopicNo.7)  Re[4]: SQLでお願いします
□投稿者/ 中博俊@管理人 (10回)-(2007/10/22(Mon) 19:48:38)
中博俊@管理人 さんの Web サイト
(20)がおかしいU+2473ね。
(21)〜(35)がU+3251〜U+325F
(36)〜(50)がU+32B1〜U+32BF
なので50までは表現できます。

引用返信 編集キー/
■9240 / inTopicNo.8)  Re[5]: SQLでお願いします
□投稿者/ mあ (123回)-(2007/10/22(Mon) 23:21:35)
2007/10/22(Mon) 23:22:55 編集(投稿者)

No9239 (中博俊@管理人 さん) に返信
> (20)がおかしいU+2473ね。
> (21)〜(35)がU+3251〜U+325F
> (36)〜(50)がU+32B1〜U+32BF
> なので50までは表現できます。
>

Vista以上って入れておいて欲しかった・・・

Vista未満な環境は別途フォントインストールです。
http://www.eonet.ne.jp/~kotobukispace/ddt/jisx0213/jisx0213.html


解決済み
引用返信 編集キー/
■9244 / inTopicNo.9)  Re[6]: SQLでお願いします
□投稿者/ ありんこ (1回)-(2007/10/23(Tue) 13:29:57)
No9240 (mあ さん) に返信
> 2007/10/22(Mon) 23:22:55 編集(投稿者)
>
> ■No9239 (中博俊@管理人 さん) に返信
>>(20)がおかしいU+2473ね。
>>(21)〜(35)がU+3251〜U+325F
>>(36)〜(50)がU+32B1〜U+32BF
>>なので50までは表現できます。
>>
>
> Vista以上って入れておいて欲しかった・・・
>
> Vista未満な環境は別途フォントインストールです。
> http://www.eonet.ne.jp/~kotobukispace/ddt/jisx0213/jisx0213.html
>


2000serverにrow_number()なんて無いんですけど・・・・・・・・
2000だとどうつくるんですか?無理ですか?
引用返信 編集キー/
■9264 / inTopicNo.10)  Re[7]: SQLでお願いします
□投稿者/ 片桐 (52回)-(2007/10/23(Tue) 23:12:41)
片桐 さんの Web サイト
日本語ではないですが、

http://msforums.ph/blogs/thetrainer/archive/2007/09/04/row-number-in-sql-server-2000-and-sql-server-2005.aspx

乗ってるSQL文は日本語も英語も無いので(笑)
引用返信 編集キー/
■9269 / inTopicNo.11)  Re[7]: SQLでお願いします
□投稿者/ Mr.T (106回)-(2007/10/24(Wed) 01:59:09)
Mr.Tです、こんにちは。
> 2000serverにrow_number()なんて無いんですけど・・・・・・・・
> 2000だとどうつくるんですか?無理ですか?

SQL一文でつくるのは、サブクエリを使うような形になるので、
非常に面倒です。
ストアド内で一時テーブル作成して、そこで連番を
つくるのが簡単でしょう。
連番は、カーソルで一つずつカウントアップするか、identify属性を利用して
自動連番にするか、でしょうか。
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -