webForumDet fria alternativet

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

Databaser & SQLur Databashanterare & SQL

4 svar · 219 visningar · startad av SilvioF

Medlem sedan juni 2000547 inlägg
Frågan#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?

Medlem 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.

Medlem 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?

Medlem 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?

Medlem 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.b746b907
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
127 ms — hämta tråd, inlägg och bilagor (db)