Следующие фрагменты должны продемонстрировать проблему, с которой я столкнулся как в SQL Server, так и в моем веб-приложении VBScript:
SELECT '"Hello World"'
SELECT '"Hello World' + CHAR(0) + '"'
Результаты:
"Hello World"
"Hello World
Обратите внимание, что второй результатВ строке отсутствует последняя двойная кавычка.
Я понимаю, что вы не можете объединить строки со значением NULL в SQL Server.Однако следующий фрагмент показывает, что CHAR (0) не считается NULL в отношении SQL Server.
SELECT ISNULL(CHAR(0), 'CHAR(0) IS CONSIDERED NULL')
Результат:
Кроме того, когда я читаю это значениеиз БД в переменную в VBScript, я также не могу объединить эту переменную.
Я не разработчик C, но я понимаю, что строки в стиле C заканчиваются нулевым символом.Это актуально?Может кто-нибудь, пожалуйста, помогите мне понять, почему это происходит в SQL Server и в VBScript?
Я могу решить свою непосредственную проблему, просто заменив все CHAR (0) в поврежденных данных, но сначала я хотел бы понять причину этого и разработать профилактическое решение.
РЕДАКТИРОВАТЬ: Включая некоторые VBScript
testSql = "SELECT '""Hello World' + CHAR(0) + '""' AS TestString"
set resultSet = conn.execute(testSql)
testString = resultSet.Fields.Item("TestString")
testString = testString & "}"
Response.Write testString
Результат:
"Hello World