Вставить пустую строку из Excel в SQL (int)

#sql #vba

#sql #vba

Вопрос:

У меня есть данные в Excel, которые нужно вставить в SQL.

Есть строки, которые имеют пробел, когда я пытаюсь вставить данные в SQL, данные вставляются как ‘0’ вместо ‘NULL’.

Пример данных, как показано ниже:

 ---------------------------------
Items          Total      Price
---------------------------------
Glue             4          $1
Socks            2          $7
Tumbler                     $40
Pen             10          $1
Eraser                      $0.5
---------------------------------

Items(char(50))
Total(int)
Price(float)
  

Кто-нибудь знает, как я могу вставить пустые данные как NULL вместо «0»?

Ниже то, что у меня есть на данный момент.

 STRSQL = "INSERT INTO [Stationary].[dbo].[Stocks] ([Items],[Total],[Price])" amp; _
"VALUES ('" amp; Range("A" amp; i) amp; "','" amp; Range("B" amp; i) amp; "','" amp; Range("C" amp; i) amp; "')"
  

Очень признателен, если кто-нибудь может мне помочь в этом.

Комментарии:

1. разрешить значение null для столбца total (int)

2. В зависимости от риска и ценности базы данных, вы также можете захотеть очистить / экранировать данные, которые вы читаете из ячеек, чтобы избежать вредоносного внедрения SQL.

Ответ №1:

Пожалуйста, попробуйте заменить

 amp; Range("B" amp; i) amp;
  

с

 amp; IIf(Range("B" amp; i).value = "", "'Null'", Range("B" amp; i).value) amp;
  

Комментарии:

1. Это должно работать идеально. Одно небольшое улучшение, рассмотрите возможность использования value2 вместо value для защиты от (возможно, маловероятного) сценария, когда кто-то вмешивается в форматирование этого столбца у вас. Но это улучшение не является обязательным.

2. @NAJAA BAZILAH: Рад, что смог помочь!