Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Как да анализирам VARCHAR, предаден на съхранена процедура в SQL Server?

Ако е възможно, не използвайте varchar за подобни неща, използвайте таблица стойностен параметър вместо това.

За да използвате параметър на таблична стойност, първо трябва да декларирате потребителски дефиниран тип таблица:

CREATE TYPE IntList As Table
(
    IntValue int
)

След това променете вашата съхранена процедура, за да приемете тази променлива вместо nvarchar:

create proc Sp_ReturnPrdoucts
    @BrandIds dbo.IntList readonly -- Note: readonly is a must!
AS
BEGIN

SELECT * 
FROM tbl_Products as p 
join tbl_Brands b on p.ProductBrandId=b.BrandId 
join @BrandIds ON(b.BrandId = IntValue)

END

Проблемът е, че IN() очаква списък с променливи, разделени със запетаи, докато вие предоставяте една променлива, чиято стойност е низ, разделен със запетая.

Ако не можете да използвате параметър със стойност на таблица, можете да използвате функция за разделяне на низове в sql, за да преобразувате стойността на varchar в таблица с ints. има много сплитери, бих препоръчал да прочетете тази статия преди да изберете един.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да съхранявате различни видове документи

  2. String_agg за SQL Server преди 2017 г

  3. sumProduct в sql

  4. Сравнете датите в T-SQL, игнорирайки частта от времето

  5. Техники за оптимизация на заявки в SQL Server:5 най-добри практики за повишаване на производителността на заявките