#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: Рад, что смог помочь!