| FAQ |
| Kalender |
|
|
|
|
#1 | |||
|
||||
|
Har WN som tidsfördriv
|
Tjo!
Vi stötte på ett litet problem på jobbet när vi skulle skapa en ny SP i MSSQL 2008. Saken är att vi har en query i stil med: Kod:
SELECT stuff FROM table
WHERE thing IN ('1','2','3')
Kod:
CREATE PROCEDURE test @things VARCHAR(400) AS BEGIN SELECT stuff FROM table WHERE thing IN @things END Om det går; måste jag då skicka med ( och ) också? Tack på förhand ![]() Pelle |
|||
|
|
Svara med citat
|
|
|
#2 | ||
|
|||
|
Medlem
|
Nja, det går nog inte, men kör dynamisk sql annars..
CREATE PROC Foo @stringpassed AS BEGIN DECLARE @SQL varchar(100) SET @SQL = 'SELECT * FROM table WHERE idno IN ' + @stringpassed EXEC(@SQL) END |
||
|
|
Svara med citat
|
|
|
#3 | ||
|
|||
|
Flitig postare
|
ändra till
WHERE thing = ANY(@things) och gör om @things till en array-variabel. |
||
|
|
Svara med citat
|
|
|
#4 | ||
|
|||
|
Klarade millennium-buggen
|
Har du möjlighet att lägga upp innehållet i @Things till en tabell i SQL så får du ett smidigt sätt att hantera det internt i SPn:
Kod:
CREATE PROCEDURE test
AS
BEGIN
SELECT stuff FROM table
WHERE thing IN (SELECT Thing FROM Things)
END
|
||
|
|
Svara med citat
|
|
|
#5 | |||
|
||||
|
Har WN som tidsfördriv
|
danjel: Funderade på det, men det är en rätt stor SP och kommer se grötigt ut
![]() Bjorne: Fränt! Hur konverterar man en sträng till en array i t-sql? Conny: Som det ser ut nu kommer det bli nått i stil med det du föreslog. Kommer dock skapa en virtuell tabell isf
|
|||
|
|
Svara med citat
|
|
|
#6 | ||
|
|||
|
Medlem
|
kolla även denna, intressant..
http://www.4guysfromrolla.com/webtech/031004-1.shtml |
||
|
|
Svara med citat
|
|
|
#7 | |||
|
||||
|
Mycket flitig postare
|
Följande sida listar ett par do's and don'ts. Den är absolut värd en plats bland ens bokmärken.
http://www.sommarskog.se/arrays-in-sql-2008.html |
|||
|
|
Svara med citat
|
|
|
#8 | |||
|
||||
|
Medlem
|
Denna funktion använder jag mig av ofta för att konvertera en kommaseparerad sträng till en table för att göra en insert med.
Kod:
create FUNCTION [dbo].[StringList_To_Table] (@list nvarchar(MAX))
RETURNS @tbl TABLE (String nvarchar(max) NOT NULL, [Id] [int] IDENTITY(1,1) NOT NULL) AS
BEGIN
DECLARE @pos int,
@nextpos int,
@valuelen int
SELECT @pos = 0, @nextpos = 1
WHILE @nextpos > 0
BEGIN
SELECT @nextpos = charindex(',', @list, @pos + 1)
SELECT @valuelen = CASE WHEN @nextpos > 0
THEN @nextpos
ELSE len(@list) + 1
END - @pos - 1
INSERT @tbl (String)
VALUES (convert(nvarchar, substring(@list, @pos + 1, @valuelen)))
SELECT @pos = @nextpos
END
RETURN
END
Kod:
insert into table MyTable select String,Id from StringList_To_Table('hej,hopp,test')
|
|||
|
|
Svara med citat
|
| Svara |
|
|