Хорошо, не знаю, почему многомиллиардная компания экономит на функциях массива для своих флагманских серверов SQL. Вот почему люди используют MySQL Server.Хорошо, хватит разглагольствовать.Использование SQL 2005.
Допустим, я получил массив с помощью флажка с другой страницы, используя метод querystring:
intTask = request.querystring("task")
Для этого примера intTask = "1,3,5"
Затем я использовал запрос
SELECT user.Task FROM user WHERE (user.Task in (" & intTask & "))
Это дает ошибку:
Conversion failed when converting the nvarchar value '1, 2' to data type int
Массив в столбце User.task здесь = 1,2.NVARCHAR - это тип данных.intTask - это строка.Не знаю, почему SQL пытается преобразовать столбец в целые числа, когда предполагается, что это сравнение строк.Я уже знаю об уязвимости SQL-инъекций, о которой позаботился другой скрипт для страницы.
ОК.Как сравнить массивы с помощью SQl Server 2005?Я не могу найти какие-либо функции SQL, которые будут перебирать 2 строки и сравнивать для всех совпадающих значений.
Например
intTask = 1,2
user.task = 3,5,7,2,9
Из-за 2-х, я должен получить набор записейпотому что 2 существуют в обоих массивах
UPDATE
Существует ли функция SQL, которая будет обрабатывать два массива и перебирать массивы для поиска подходящих элементов.Что-то вроде:
intTask = "1,3,5"
user ("task") = "3,5,2"
ARR1 = split (intTask,",")
ARR2 = split (пользователь ("задача"), ",")
для i = от 0 до UBound (arr1)
for j=0 to UBound(arr2)
if(arr1(i) = arr2(j)) then
common_found = true
end if
Next
Далее
Заранее спасибо