Jag har en sql-sats som returnerar en sträng, Om du kör SQL Server 2000 så kan du bygga dig en split-funktion vilken returnerar en table datatyp där du placerar dina int fält. En annan variant är, om du kör det i en procedur, att först plocka ut alla sökta userids till en temptabell, och sedan använda denna i IN() klusulen. För att göra själva split-funktionen eller dela upp och lägga in i temptabellen kolla på charindex samt substring, right och left funktionerna typ. Jag har byggt en splitfunktion fast jag har inte koden här, så om du vill kan du få den senare. Hej Pelle! Tack för det. Jag skall ta en titt på det och se om det kunde löst mitt dilemma.Konvertera sträng till int via IN()
select strFirstname, strLastname
from tbluser
where lnguserid in('38,39')
men skulle behöva omvandla detta så det inte är '' - vilket en annan sql-sats genererar - till:
select strFirstname, strLastname
from tbluser
where lnguserid in(38,39)
Felet jag får är:
Syntax error converting the varchar value '38,39' to a column of data type int.
Hela sql-satsen ser ut på följande sätt:
select strFirstName, strLastname
from tbluser
where lnguserid in(
select replace(replace(convert(varchar,allowuserlist),'0,',''),';',',')
from tbljobb
where allowuserlist like '%0,%'
and allowuserlist is not null
and allowuser=0
and userid = 38)
---
Fältets allowuserlist ursprunga värde ser ut som följer:
0,38;0,39;
Där 38 och 39 är lnguserid som skall plockas ut med in-satsen.
Hälsningar
/PelleSv: Konvertera sträng till int via IN()
Sv: Konvertera sträng till int via IN()
Detta kanske hjälper dig lite
SELECT LEFT(REPLACE(REPLACE(CONVERT(varchar, allowuserlist),
'0,', ''), ';', ','), LEN(REPLACE(REPLACE(CONVERT(varchar,
allowuserlist), '0,', ''), ';', ',')) - 1) AS MittFält
returnerar
38,39
För att omvandla en datatyp så kan man skriva något i stil med
SELECT CAST('26' AS tinyint(1)) AS MittFält
... Kanske är till någon nytta.
Lev väl,
Tom S.Sv: Konvertera sträng till int via IN()
Nu skrev jag om applikationen för att "tänket" inte helt solklart vilket resulterade i detta slarviga problem.
/Pelle