Mogelijk Hoofdletter ongevoelig in database
Is er een mogelijkheid dat ik hoofdletterongevoelig data uit mijn database kan halen?
Kun je je vraag specifieker stellen?
ik zet bijv de tekst: TeSt in als een naam in de database met nog paar waardes,
als ik dan doe:
SELECT * FROM test WHERE naam = 'test'";
dan werkt het niet omdat het op 1 of andere manier hoofdlettergevoelig is :S
Ja dat klopt MSQL is hoofdletter gevoelig
Als je ook een antwoord hebt zou top zijn :D
Ik heb hem niet in ieder geval...
Alleen via een omweg...
Alles uit tabel halen... str_lower() gebruiken en dan zoeken op de tekst die je ook met str_lower klein maakt...
Gewijzigd op 07/10/2005 21:50:00 door Willem Jan Z
Sorry
Ik denk dat je in zo'n geval beter "like" kunt gebruiken. Ik zal even nazoeken of die hoofdletterongevoelig is
Maar ik denk dat ik al een andere oplossing heb
Vertel :D
thijs:
Hmm ik snap wat je bdoelt willem-jan maar dat is niet wat ik wil, want ik wil ook hoofdletters kunnen gebruiken..
Maar ik denk dat ik al een andere oplossing heb
Maar ik denk dat ik al een andere oplossing heb
Wat Willem-Jan zegt is ook alleen maar voor de test. Je kunt dan in de database gewoon hoofdletters blijven gebruiken.
Mocht je een oplossing vinden, graag ook even hier posten voor anderen (en voor mij).
Nou tis meer een omzeiling dan oplossing :P En voor jullie denk ik niet egt relevant
Post toch ongeveer de denk/script wijze
Nou kheb die waarde gewoon een id meegegeven en ipv op die naam te zoeken zoek ik op die id
Oke, voorkennis dus...
Of ik nu
SELECT * FROM tabel WHERE naam = 'rafael'
gebruik, of ik gebruik
SELECT * FROM tabel WHERE naam = 'RAFAEL'
beide geven hetzelfde resultaat :)
Edit:
Meer info, Windows XP, MySQL 4.0.23-nt, op m'n server ook net getest, Linux, MySQL 4.1.13-standard, werken beide perfect.
Ligt eerder aan het veld type denk ik... Ik heb TINYTEXT in gebruik op het desbetreffende veldje...
Gewijzigd op 07/10/2005 22:43:00 door Alfred -
Ik heb varchar als type veld en MySQL 4.1.12a
Quote:
VARCHAR
The range of Length is 1 to 255 characters. VARCHAR values are sorted and compared in case-insensitive fashion unless the BINARY keyword is given
The range of Length is 1 to 255 characters. VARCHAR values are sorted and compared in case-insensitive fashion unless the BINARY keyword is given
Bron: http://help.scibit.com/Mascon/masconMySQL_Field_Types.html
Edit:
Quote:
A.5.1. Case Sensitivity in Searches
By default, MySQL searches are not case sensitive (although there are some character sets that are never case insensitive, such as czech). This means that if you search with col_name LIKE 'a%', you get all column values that start with A or a. If you want to make this search case sensitive, make sure that one of the operands has a case sensitive or binary collation. For example, if you are comparing a column and a string that both have the latin1 character set, you can use the COLLATE operator to cause either operand to have the latin1_general_cs or latin1_bin collation. For example:
col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin
If you want a column always to be treated in case-sensitive fashion, declare it with a case sensitive or binary collation. See Section 13.1.5, “CREATE TABLE Syntax”.
Before MySQL 4.1, COLLATE is unavailable. Use the BINARY operator in expressions to treat a string as a binary string: BINARY col_name LIKE 'a%' or col_name LIKE BINARY 'a%'. In column declarations, use the BINARY attribute.
Simple comparison operations (>=, >, =, <, <=, sorting, and grouping) are based on each character's “sort value.” Characters with the same sort value (such as ‘E’, ‘e’, and ‘é’) are treated as the same character.
By default, MySQL searches are not case sensitive (although there are some character sets that are never case insensitive, such as czech). This means that if you search with col_name LIKE 'a%', you get all column values that start with A or a. If you want to make this search case sensitive, make sure that one of the operands has a case sensitive or binary collation. For example, if you are comparing a column and a string that both have the latin1 character set, you can use the COLLATE operator to cause either operand to have the latin1_general_cs or latin1_bin collation. For example:
col_name COLLATE latin1_general_cs LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_general_cs
col_name COLLATE latin1_bin LIKE 'a%'
col_name LIKE 'a%' COLLATE latin1_bin
If you want a column always to be treated in case-sensitive fashion, declare it with a case sensitive or binary collation. See Section 13.1.5, “CREATE TABLE Syntax”.
Before MySQL 4.1, COLLATE is unavailable. Use the BINARY operator in expressions to treat a string as a binary string: BINARY col_name LIKE 'a%' or col_name LIKE BINARY 'a%'. In column declarations, use the BINARY attribute.
Simple comparison operations (>=, >, =, <, <=, sorting, and grouping) are based on each character's “sort value.” Characters with the same sort value (such as ‘E’, ‘e’, and ‘é’) are treated as the same character.
Bron: http://dev.mysql.com/doc/mysql/en/case-sensitivity.html
Gewijzigd op 07/10/2005 23:06:00 door Alfred -
en of deze opbouw case-sensitive (hoofdlettergevoelig) is.