先週より、本腰入れてずっと過去問に取り組んでます。
わかんなかったら、きちんとググってますが、まぁ、よく忘れていること。。。
では
【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時、走りにいってこようかな。。。