webForumDet fria alternativet

Välja left(sträng, 4) från databasen.

4 svar · 219 visningar · startad av SilvioF

SilvioFMedlem sedan juni 2000547 inlägg
#1

Jag sitter jsut nu och jobbar mot ett system som någon knepig människa har nyggd databasen för. Jag får inte bygga om någonting eftersom det skulle betyda ett massivt arbete för deras övriga kodare.

Mitt problem är att jag vill välja ut ett visst antal poster efter ålder. Nu är det så att dom har lagrat födelsedatumen på användarna på följande sätt: '1972,10,18' (år, månad, dag) och datatypen varchar(10) i MS SQL Server 2000.

Jag måste nu försöka göra ett urval mot de fyra första tecknen i kolumnen för att kontrollera årtalet.
Jag har försökt med följande:

SELECT * FROM members WHERE (LEFT(age, 4) < '1972') AND (LEFT(age, 4) > '1976')

, men det fungerade inte.

Någon som har något förslag?

PaceMedlem sedan juni 20019 024 inlägg
#2

Ett varchar fält kommer alltid att sorteras i bokstavsordning (eller teckenordning i det här fallet). Så det blir helt enkelt att konvertera till datum/int.

LarsGMedlem sedan dec. 200012 464 inlägg
#3

SilvioF

Det fungerar att använda left men det villkor du skrev kommer aldrig att bli sant.

Vilka årtal vill du returnera?

SilvioFMedlem sedan juni 2000547 inlägg
#4

Jag vill returnera alla årtal från 1972 till 1976.

Men jag löste det på annat sätt. Jag byggde upp sql-strängen lite dynamiskt med hjälp av en loop. Lite tjuvknep, men det funkar. Har du ett annat förslag?

LarsGMedlem sedan dec. 200012 464 inlägg
#5
SELECT * FROM members WHERE LEFT(age, 4) between '1972' AND '1976'
129 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)