paul_vin Ответов: 3

Я использую метод dbo.split в SQL server для передачи значений в хранимую процедуру в качестве входного параметра, но он дает неверный вывод


I am using dbo.split method in sql server to pass values to stored procedure as input parameter but it is giving wrong output 


Мой запрос выглядит следующим образом
select * from Fin where Company in (select Company  from  dbo.Split('GHCL LTD,GODREJ INDUSTRIES LTD',','))


где
'GHCL LTD,GODREJ INDUSTRIES LTD'
это названия компаний.

но это дает данные от всей компании, присутствующей в базе данных

Что я уже пробовал:

select * from Fin where Company in (select Company  from  dbo.Split('GHCL LTD,GODREJ INDUSTRIES LTD',','))

3 Ответов

Рейтинг:
6

Richard Deeming

На первый взгляд, ваш обычай dbo.Split функция не возвращает столбец с именем Company.

А это значит, что Company столбец в вашем внутреннем запросе на самом деле является ссылкой на Company столбец из вашего внешнего запроса.

Делая ваш запрос эквивалентным:

select * from Fin where Company = Company
Это вернет все записи, где Company колонка нет NULL.

Узнайте имя столбца, возвращенного из вашего dbo.Split функция, и используйте это:
select * from Fin where Company in (select Value from dbo.Split('GHCL LTD,GODREJ INDUSTRIES LTD', ','))

NB: Если вы используете SQL 2016 или выше, вы можете использовать встроенный STRING_SPLIT[^] функция, которая возвращает один столбец, называемый value.


Рейтинг:
1

debasish mishra

Его лучше пойти на

GetColumnValue
функция в sql.

Функция разделения запятой в SQL Server 2008 - переполнение стека[^]

Предложение для вас заключается в том,что, пожалуйста, не публикуйте вопросы с названиями организаций, а вместо этого добавьте X, Y Z, как это.


Рейтинг:
0

Karthik_Mahalingam

проверьте мой совет, он может вам помочь
Как запросить разделенный запятыми столбец значений в SQL[^]