2013-03-26 3 views
7

Я должен создать запрос, совместимый для SQL Server и MS-Access.конвертировать int в varchar для SQL Server и MS-Access

Проблема в том, что в SQL Server я пытаюсь преобразовать число в varchar. В SQL Server я могу сделать преобразование следующим образом: convert(varchar(100), 5) в MS Access: CStr(5).

Есть ли возможность сделать это совместимым для обеих баз данных?

ответ

5

В SQL Server вы можете написать определенную пользователем скалярную функцию с именем CStr(), которая выполняет преобразование.

Встроенные процедуры несовместимы.

К сожалению, это не будет работать, потому что вам нужно префикс функции со всем именем схемы. Таким образом, вы можете иметь:

create function cstr(@val int) 
returns varchar(255) as 
begin return(cast(@val as varchar(255))) end; 

Но вы должны назвать его как:

select dbo.cstr(4); 

Если значение в столбце, а затем рассмотреть написание взгляд на таблицу, в каждой базе данных, что делает преобразование в представлении.

Чтобы заставить VB работать как с Access, так и с SQL Server, вы могли бы просто отказаться от доступа и использовать реальную базу данных. О, я думаю, это не решение;) Вам нужно будет определить тип базы данных и иметь разные коды для каждого. Вы можете свести к минимуму это, используя представления, чтобы скрыть некоторые уродства.

Возможно, вам будет выгодно перейти на SQL Server 2012, который расширил свой репертуар функций, включив некоторые функции доступа. Но не cstr().

+0

проблема заключается в том, что я использую этот запрос в VB, и я могу подключить sql datebase или доступ –

+0

ОК, я понимаю, что вы очень благодарны –

4

Мы можем преобразовать число в VARCHAR так:

select format(Adress_ID,'0') ... next code 

этот код будет конвертировать из обоих, Access и SQL Server

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