こんにちは、ねこです。

自称プログラマのおばちゃんのブログです。いろいろあるよねぇ~。

Microsoft MCSA SQL Server 2016 (70-761)むぼーな挑戦12/CASTとCONVERTちゃんとわかってなかった。。。

2019-11-18 13:07:26 | プログラム 勉強

先週より、本腰入れてずっと過去問に取り組んでます。

わかんなかったら、きちんとググってますが、まぁ、よく忘れていること。。。

では

【CAST/CONVERT】

いってみよー。

SELECT CAST(25.65 AS int);

---「25」返ってくる。

SELECT CAST('2017-08-25' AS datetime);

---「2017-08-25 00:00:00.000」返ってくる。

SELECT CAST(25.65 AS varchar);

---「25.65」返ってくる。

SELECT CONVERT(int, 25.65);

---「25」返ってくる。

SELECT CONVERT(varchar, 25.65);

---「25.65」返ってくる。

SELECT CONVERT(datetime, '2017-08-25');

---「2017-08-25 00:00:00.000」返ってくる。

 

【問題】

では、こんな問題が過去問にありました。

The query output window displays the following error message: Conversion failed when converting the varchar value "AB012" to data type int.
You need to resolve the error.

クエリ出力ウィンドウには、次のエラーメッセージが表示されます。varchar値 "AB012"をデータ型intに変換するときに、変換に失敗しました。
エラーを解決する必要があります。

Solution: You modify the Transact-SQL statement as follows:下記のステートメントを書き直してください。

Does the solution meet the goal?正解?不正解?

<答え>間違え


【噂になってる答え】

https://www.examtopics.com/discussions/microsoft/view/3884-exam-70-761-topic-1-question-128-discussion/

<答え>正解

なぜなら、『RegistrationNumber= varchar(5)のデータ型と述語の値も明示的にvarchar(5)にキャストされるため、エラーは発生しません。』ということらしいです。ねこにはわかりません。。。

なので検証してみました。


【検証!】

CREATE TABLE tblVehicleRegistration
(
VehicleID int,
RegistrationNumber varchar(5),
RegistrationDate date,
UserId int
)

INSERT INTO tblVehicleRegistration
VALUES
(1,'20012', GETDATE(),1)

SELECT UserId, RegistrationNumber, CAST(20012 as varchar(5)) as casted
FROM tblVehicleRegistration
WHERE RegistrationNumber = CAST(20012 as varchar(5))
AND RegistrationDate > '2016-01-01';

ってなわけで、正解はちゃんとCASTされます。

なんだか、お昼のこりもののスパゲッティをたべたら胸焼けがしてきた。。。

もう2時、走りにいってこようかな。。。


 

 

 

 



最新の画像もっと見る

コメントを投稿