SQL Ulike streng sammenligning Regler

SQL Ulike streng sammenligning Regler


Den Structured Query Language (SQL) som brukes for database programmering, håndterer tegnstrenger som de fleste programmeringsspråk gjør. Tegnstrengvariabler og konstanter inneholde tekst som "Joe Smith" eller "500 Main Street». SQL har regler for sammenligning av ulike strenger, og utfallet av disse er noen ganger uventet. Noen ulike strengsammenligninger for eksempel mellom "abc" og "xyz", er åpenbart; andre krever studiet av SQL-regler.

store og små bokstaver

Microsofts SQL Server-programvaren er ikke store og små bokstaver for streng sammenligninger. Dette betyr at den behandler strengene "John Doe" og "Ola Nordmann» som like. Mange ganger en programmerer vil vurdere dette en god ting fordi hun ikke trenger å skrive ekstra kode for å tvinge begge strenger til store bokstaver. I noen tilfeller, men hun ønsker små og store bokstaver streng sammenligninger. På den annen side, er Oracle database-programvare og små bokstaver så "JOHN DOE" samsvarer ikke "John Doe". En programmerer som ønsker å eliminere case-sensitivitet ville bruke en funksjon som STORE () på begge strenger, og tvinger alle tegn i stor bokstav.

string Lengde

Tegn variabler som inneholder ulik lengde strenger sammenligne ulikt, selv om de begynner med de samme tegnene. For eksempel "500 Main" og "500 Main Street" er ikke like. Tegn variabler definert for forskjellige lengder, men som har samme innhold vil sammenligne likt. Hvis en beskrivelse feltet har en definert lengde på 50 og en annen har en lengde på 30 de vil være like hvis de begge inneholder teksten "Blå løpesko."

Type

Du kan definere SQL tegnstreng felt som CHAR, VARCHAR, nchar eller nvarchar typer. CHAR og nchar har faste størrelser; VARCHAR og nvarchar har størrelser som varierer opp til det maksimale som er angitt i feltet definisjon. En felttype påvirker ikke string sammenligninger; hvis de har samme innhold de vil sammenligne like. Du kan ikke sammenligne en teksttype felt med en annen tegnstreng felt; SQL flagger dette som en feil.

blanks

For SQL Server tegnstrenger kan ha tekst med en kombinasjon av ledende, etterfølgende eller innebygde mellomrom. To strenger å ha lignende innhold, men hvor man har etterfølgende blanks vil sammenligne likt, for eksempel "abc" og "abc". Men vurderer SQL strenger med ledende blanks som "abc" og "abc" ulik. Strenger med innebygde blanks som "abc" og "en bc" likeså er ikke like.