- PR -

SQLのロジックについて

投稿者投稿内容
未記入
常連さん
会議室デビュー日: 2005/02/21
投稿数: 20
投稿日時: 2005-03-04 10:09
SQLの初心者ですので具体的な例でお答えいただければうれしいです

a  char(13)   の中に ’099−222−5678 ’

と入ってるとします

’−’の場所は不定です

aの値を、’099’、’222’、’5678’に分けるときは
どのように記述したら良いのですか?

もうひとつ・・・

AというファイルのKEYが、社員コード、連番で内容が名前

社員コード、連番、名前

とあるとして
1社員コードに対して連番が10件存在する・・・として
名前は連番に対してあると思います

そこで、名前がSPACEでかつ連番が一番小さいデータを一件
だけ抽出するにはどんなWHEREかけばよろしいのですか?

よろしくお願いします

NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-03-04 10:53
お早うございます。

まず、データベースは何ですか?

引用:

aの値を、’099’、’222’、’5678’に分けるときは
どのように記述したら良いのですか?


関数を使う必要があると思いますのでデータベースは何ですか?

引用:

AというファイルのKEYが、社員コード、連番で内容が名前
…中略…
だけ抽出するにはどんなWHEREかけばよろしいのですか?


名前のデータ型は?SPACEって事はNULL許可の列でNULLって事?
それともSPACEが入っているって事?

等々条件をもう少し詳しく 



_________________
Inspired Ambitious
ISMS Assistant Auditor
未記入
常連さん
会議室デビュー日: 2005/02/21
投稿数: 20
投稿日時: 2005-03-04 10:57
NAO様  おはようございます

まず、データベースはSQL SERVERです

名前はchar(30)でNULLは許可してなく単にSPACEか
どうかを条件として聞きたいのです

よろしくお願いします
未記入
常連さん
会議室デビュー日: 2005/02/21
投稿数: 20
投稿日時: 2005-03-04 10:59
maru様  こんにちは

SQL文はおろか、CやVBもやったことがありません
ずっとCOBOLをしてきた人間なのです
申し訳ありません
もちろん、COBOLなら想像はできます

そのレベルなのでよろしくお願いします
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-03-04 11:18
引用:

AというファイルのKEYが、社員コード、連番で内容が名前



引用:

まず、データベースはSQL SERVERです
名前はchar(30)でNULLは許可してなく単にSPACEか
どうかを条件として聞きたいのです
よろしくお願いします



と言う事は社員コード、連番は必ず入っていて、名前がSPACE(NULLを許可していないという事はスペース入れるしか無いと思うので)って言う以下の様なテーブルって事ですか?

社員コード 連番 名前
----------------------
11111 1 あああ
11112 3 いいい
11113 3    

構文として書くならば(全データ表示させるとして)

select * from [テーブル名] where 名前 <> '' です。

もう一つの文字列切り出しは

Trasact-SQLリファレンス

http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_tsqlcon_6lyk.asp

等を読んで条件に合う関数を探して下さい m(__)m

[ メッセージ編集済み 編集者: NAO 編集日時 2005-03-04 11:26 ]
未記入
常連さん
会議室デビュー日: 2005/02/21
投稿数: 20
投稿日時: 2005-03-04 11:26
NAO様

社員コード 連番 名前
----------------------
11111 1 あああ
11112 3 いいい
11113 3    

と言うより

社員コード 連番 名前
----------------------
11111 1 あああ
11111 2 
11111 3
  〜
11111 10
11112 1 いいい
11112 2
  〜
11112 10
11113 1

となるのです

探して見ます・・・ありがとうございました

できれば、具体的例が欲しいのですが・・・    
NAO
ぬし
会議室デビュー日: 2001/10/24
投稿数: 1256
お住まい・勤務地: 神奈川のはずれから東京の下町
投稿日時: 2005-03-04 12:55
あくまで未記入さんの例の場合であった場合ですが…

select * from [テーブル名] where 名前='' and 連番=2 order by 社員コード

じゃダメかなぁ…

【上のSQLの問題点】
連番を固定で指定している為に違ったら没

※色々試行錯誤したが連番が異なった場合(たとえば社員コードによって連番の2に名前が入っていた場合没)がこれと言って…(×_×)
未記入
常連さん
会議室デビュー日: 2005/02/21
投稿数: 20
投稿日時: 2005-03-04 13:18
NAO様

連番の2に名前が入っているとは限らないのです
2に入ってなくて3に名前が入っている場合もあります
ランダムに名前が存在していて、その中で名前がはいていない
連番の最小値のデータを取得したいのですが・・・うーん


>a  char(13)   の中に ’099−222−5678 ’
>
>と入ってるとします
>
>’−’の場所は不定です
>
>aの値を、’099’、’222’、’5678’に分けるときは
>どのように記述したら良いのですか?

こちらの件はどーでしょうか?

よろしくお願いします

スキルアップ/キャリアアップ(JOB@IT)