mboost-dp1
SQL BETWEEN spørgsmål
- Forside
- ⟨
- Forum
- ⟨
- Programmering
Hej!
Jeg har et spørgsmål ang. keywordet 'BETWEEN' i SQL.
Her er hvordan det simple table er opbygget samt inserts:
SELECT * FROM person WHERE ( id BETWEEN 1 AND 3);
Returnerer Id: 1, 2, 3 - som forventet.
SELECT * FROM person WHERE ( name BETWEEN 'a' AND 'n');
Returnerer Id: 1, 2.
Hvorfor bliver det sidste ID ikke hentet ind når man søger via char's, når BETWEEN skulle forestille at være 'inclusive' ligesom integer?
Jeg har et spørgsmål ang. keywordet 'BETWEEN' i SQL.
Her er hvordan det simple table er opbygget samt inserts:
CREATE TABLE person
(
id integer
name varchar(20)
);
INSERT INTO person VALUES
(
1, 'anders'
);
INSERT INTO person VALUES
(
2, 'mikkel'
);
INSERT INTO person VALUES
(
3, 'nina'
);
SELECT * FROM person WHERE ( id BETWEEN 1 AND 3);
Returnerer Id: 1, 2, 3 - som forventet.
SELECT * FROM person WHERE ( name BETWEEN 'a' AND 'n');
Returnerer Id: 1, 2.
Hvorfor bliver det sidste ID ikke hentet ind når man søger via char's, når BETWEEN skulle forestille at være 'inclusive' ligesom integer?
#2 Tak for dit svar, jeg sætter pris på det.
Grunden til jeg spørger, er fordi at jeg er ved at opfriske mit SQL.
Jeg følger en bog hvor følgende SQL query bliver beskrevet:
The next condition requires that film's name must begin with a letter in the range of P to T:
Integer-sammenligningen virker, men eksemplet med 'P' / 'T' er da løgnagtigt. Bogen skulle forestille sig at præsentere 'standard SQL'.
Jeg har prøvet eksemplet på både PostgreSQL (som er min primære db) samt MySQL. Begge kommer med samme svar.
Grunden til jeg spørger, er fordi at jeg er ved at opfriske mit SQL.
Jeg følger en bog hvor følgende SQL query bliver beskrevet:
The next condition requires that film's name must begin with a letter in the range of P to T:
WHERE ( YearReleased NOT BETWEEN 1960 AND 1969 )
AND
( FilmName BETWEEN 'P' AND 'T');
Integer-sammenligningen virker, men eksemplet med 'P' / 'T' er da løgnagtigt. Bogen skulle forestille sig at præsentere 'standard SQL'.
Jeg har prøvet eksemplet på både PostgreSQL (som er min primære db) samt MySQL. Begge kommer med samme svar.
#4
Fidomuh patch ??
Fidomuh patch ??
1> SELECT @@VERSION
2> GO
-------------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
------------------------------------------------------------------------
-----
Microsoft SQL Server 2005 - 9.00.1399.06 (Intel X86)
Oct 14 2005 00:33:37
C
opyright (c) 1988-2005 Microsoft Corporation
Express Edition on Windows
NT 5.1 (Build 2600: Service Pack 3)
(1 row affected)
1>
2> CREATE TABLE test (txt VARCHAR(25) NOT NULL PRIMARY KEY)
3> GO
1> INSERT INTO test VALUES('Alfa')
2> GO
(1 row affected)
1> INSERT INTO test VALUES('Beta')
2> GO
(1 row affected)
1> INSERT INTO test VALUES('Charlie')
2> GO
(1 row affected)
1> INSERT INTO test VALUES('Delta')
2> GO
(1 row affected)
1>
2> SELECT * FROM test WHERE txt BETWEEN 'B' AND 'C'
3> GO
txt
-------------------------
Beta
(1 row affected)
1> SELECT * FROM test WHERE txt BETWEEN 'B' AND 'D'
2> GO
txt
-------------------------
Beta
Charlie
(2 rows affected)
Gå til top
Opret dig som bruger i dag
Det er gratis, og du binder dig ikke til noget.
Når du er oprettet som bruger, får du adgang til en lang række af sidens andre muligheder, såsom at udforme siden efter eget ønske og deltage i diskussionerne.