2014-11-10 4 views
0

Ниже приведен запрос на добавление в MS Access. Мне нужно перенести его на SQL Server, который я могу сделать. Но у меня есть вопрос относительно «!» используемый в запросе, созданном из конструктора запросов. Мне не удалось понять дизайн.Перенос запроса доступа MS Access к SQL Server

INSERT INTO [TABLEX] (COL1, COL2, COL3, COL4) 


SELECT [TableA].[COL1], [TableA].[COL2], [TableA].[COL5], 

IIf(Left([COL3],4) In (YYYY,XXXX),"YYYY - XXXX --- XXXXXX",[Name]) AS Name 

FROM [TableC], [TableA] INNER JOIN [TableB] ON [TableA].[COL1] = [TableB].[COL1] 

WHERE (((Left([COL3],4))<>"XXXX" And (Left([COL3],4))<>"YYYY" And 

(Left([COL3],4))=[TableC]![COL1]) AND (([TableC].COL2)="-") AND (([TableA].[COL4])<>"MMM")) OR 

(((Left([COL3],4))="XXXX" And (Left([COL3],4))=[TableC]![COL1]) AND (([TableC].COL2)="-") AND 

(([TableA].[COL4])="ZZZ")) OR (((Left([COL3],4))="YYYY" And (Left([COL3],4))=[TableC]![COL1]) AND (([TableC].COL2)="-")); 

Может ли кто-нибудь сообщить мне, что заявление T-SQL может выполнить ту же работу. Ниже приведены случаи, когда они появляются.

(левый ([COL3], 4)) = [TableC]! [COL1])

Любые советы будут иметь большую помощь. Спасибо

+0

Попробуйте заменить '!' с '.' например, в '(([TableC] .COL2) = "-")'. – DBNull

+0

Я знаю эту опцию, мне просто интересно, что означает этот оператор в запросе desgin, откуда он сгенерирован – AllPigsREqual

+1

Я думаю, что это означает то же самое в Access SQL, что и точка в TSQL. Когда я использовал Access, я бы набрал имя таблицы, за которым следует восклицательный знак, и появится список имен полей. – DBNull

ответ

0

MS Access иногда берет '.' или '!' при обращении к именам столбцов с таблицей. Странно, почему это так. Но когда вы пишете реактивные запросы в T-SQL. «!» может быть заменено на. Это решило мою проблему. И это не имеет ничего общего с операторами в T-SQL, о которых я изначально думал.

Смежные вопросы