🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

Q&A

解決済

3回答

3478閲覧

SQLServerを使ったSELECT文について

kswdfr

総合スコア21

SQL Server

SQL Serverはマイクロソフトのリレーショナルデータベース管理システムです。データマイニングや多次元解析など、ビジネスインテリジェンスのための機能が備わっています。

0グッド

0クリップ

投稿2019/11/15 01:03

編集2019/11/15 03:39

Visual studio2017のSQLQueryで

CREATE TABLE [dbo].[NAME] ( [ID] INT IDENTITY (1, 1) NOT NULL, [Name] NVARCHAR (20) NULL, CONSTRAINT [NUM] PRIMARY KEY CLUSTERED ([ID] ASC) );

というテーブルを作り

IDName
1Aさん
2Bさん

を格納しました。
AさんのIDを取得したくて
SELECT ID FROM [dbo].[Name]
WHERE Name = 'Aさん';
として取得しました。
1が表示されません。

SQLServer

1SELECT * FROM [dbo].[Name]

した結果

IDName
1Aさん
2Bさん

と表示されました
どこが間違っているかわからないので教えてください。

開発環境

Visual Studio 2017のSQLQuery

使用言語

SQL Server

検索

どこが間違っているかわからないので検索していません。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Y.H.

2019/11/15 01:33

そもそもSQLQueryでWHERE句なしでは1,2の2レコード取得できるのでしょうか?
kswdfr

2019/11/15 01:38

SQLQueryでもWHERE句は使っています。
Y.H.

2019/11/15 01:47

いや、WHEREを使用しない場合は、きちんと全件取得できていますか?という確認です。 (不具合の原因を探る場合は、原因として除外できるところは確認して除外していくための確認です。)
kswdfr

2019/11/15 01:49

WHEREを使用しない場合は、きちんと全件取得できます。
Y.H.

2019/11/15 02:00

念のため確認です。 > CONSTRAINT [NUM] PRIMARY KEY CLUSTERED ([BookID] ASC) となっていますが、kswdfrさんが確認されている環境は質問記載されている ものと全く同じもので確認されてますか? 質問記載の以下は質問用に端折ってたりしませんか? (実際は項目や条件がもうちょっと複雑なものだったりしませんか?) ・質問記載のテーブル構造(テーブル名がNAMEでIDとNAMEの2項目) ・データ(「1,Aさん」「2,Bさん」の2レコード) ・WHERE句の条件(NAME='Aさん'のみ)
kswdfr

2019/11/15 02:11

同じもので確認しました。 >>質問記載の以下は質問用に端折ってたりしませんか? (実際は項目や条件がもうちょっと複雑なものだったりしませんか?) ・質問記載のテーブル構造(テーブル名がNAMEでIDとNAMEの2項目) ・データ(「1,Aさん」「2,Bさん」の2レコード) ・WHERE句の条件(NAME='Aさん'のみ) >端折ってたりしません。
kswdfr

2019/11/15 02:14

SQLServer2017のSQLQueryで作ったCREATE TABREをMicrosoft SQL Server Management Studio 18 にコピーして使っています。
kswdfr

2019/11/15 03:42

SQL Server2017のSQLQueryはVisual Stdio2017のSQLQueryの間違えでした。 申し訳ありませんでした。
alg

2019/11/15 03:51

Name列の値を'Aさん'や'Bさん'ではなく'A'や'B'のように半角英字だけにして、そのうえで `SELECT ID FROM [dbo].[Name] WHERE Name = 'A';` を実行すると、どうなりますか?状況変わらず(1が表示されない)なのかどうか。
kswdfr

2019/11/15 03:55

`SELECT ID FROM [dbo].[Name] WHERE Name = 'A';` を実行しても1は表示されません。
alg

2019/11/15 03:57

「Visual Studio 2017のSQLQuery」を使ってどのようなコードを書いて実行したのか、提示することはできますか?
kswdfr

2019/11/15 04:01

SELECT ID FROM [dbo].[Name]  WHERE Name = 'Aさん'; と SELECT ID FROM [dbo].[Name] WHERE Name = 'A';で表示しましたが1は表示されません。
alg

2019/11/15 04:10

「どのようなコードを書いて実行したのか、提示することはできますか?」と伺ったのは、「Visual Studio 2017のSQLQuery」というのは Entity Framework の Database.SqlQuery メソッドのことだと思うのですが、それをC#等のコードでどのように書いて実行したのか、という意味でした。
kswdfr

2019/11/15 04:16

splserver文で書いてからC#で書くのでC#文は書いていません。
alg

2019/11/15 04:28

うーん、ちょっと私には理解の及ばない領域のお話のようですね。せっかくやりとりしていただきましたが、お力にはなれなさそうです。失礼しました。
x_x

2019/11/15 04:45

CREATE TABLE だけ SSMS を使ったようですが、同じ環境で作るとどうなりますか?
guest

回答3

0

ベストアンサー

SELECT ID FROM [dbo].[Name] WHERE Name = N'Aさん';
NVARCHARのを引くなら文字列にNが必要なんでは?

投稿2019/11/15 05:45

ShikaTech

総合スコア468

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kswdfr

2019/11/18 14:56

SELECT ID FROM [dbo].[Name] WHERE Name = N'Aさん'; にしたらできました。 教えてくれてありがとうございました。
ShikaTech

2019/11/19 01:56 編集

力になれたようで幸いです。 NVARCHARに対してのNプレフィックスは忘れがちなので、クエリは型と照合順序を意識して書くと良いかと。 SQLServerは基本賢いですが、日付の暗黙型変換で引っ掛けられなくなったり、照合順序の指定次第でひらがな・カタカナをファジーに指定しても引っ掛けられたりもするので。 あとBAだけじゃなくVote+もお願いしますね!
guest

0

SQL

1SELECT ID FROM [dbo].[Name] WHERE Name like '%Aさん%';

上記を試してください。
取得できるなら、余計な空白などが入っているという事になります。

投稿2019/11/15 04:32

sazi

総合スコア25327

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Microsoft SQL Server Management Studio 18 では[ID]1と表示されるのに

Microsoft SQL Server Management Studio 18 で実行したSQLが

SQL

1SELECT ID FROM [dbo].[Name] 2WHERE Name = 'Aさん';

だったに1票。

投稿2019/11/15 01:21

Orlofsky

総合スコア16417

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kswdfr

2019/11/15 01:29

SQLServer2017のSQLQueryで SELECT ID FROM [dbo].[Name] WHERE Name = 'Aさん'; で実行しても[ID]1と表示されませんでした。
Orlofsky

2019/11/15 01:35

SELECT * FROM [dbo].[Name] でテーブルに本当にINSERTされている内容を確認しては?
kswdfr

2019/11/15 01:37

SELECT * FROM [dbo].[Name] で確認したら Aさんは格納されていました。
Orlofsky

2019/11/15 01:44

質問に、SELECT * FROM [dbo].[Name]とその結果を https://teratail.com/help/question-tips#questionTips3-7 の [コード] で追記するんです。 SQL Server SQL 入門でぐぐってURLなり書籍を買うなりで、きちんとSQL入門レベルの勉強をしないといつまで経っても進歩できませんよ。
kswdfr

2019/11/15 01:54

SQL入門レベルの勉強はできています。 Microsoft SQL Server Management Studio 18 で実行すると表示されるのにMicrosoft SQL Server Management Studio 18 で実行したことと同じことをSQLServer2017のSQLQueryで実行すると表示されないので質問しました。
kswdfr

2019/11/15 03:42

SQL Server2017のSQLQueryはVisual Stdio2017のSQLQueryの間違えでした。 申し訳ありませんでした。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問