it-swarm.com.de

Auswahl zwischen Groß- und Kleinschreibung unabhängig von MySQL

Kann mir jemand sagen, ob ein SELECT-Befehl für MySQL standardmäßig die Groß- und Kleinschreibung nicht berücksichtigt? Und wenn nicht, welchen Befehl müsste ich senden, damit ich etwas tun kann:

SELECT * FROM `table` WHERE `Value` = "DickSavagewood"

Der tatsächliche Wert von Value ist dicksavagewood.

204
NoodleOfDeath

Sie sind unabhängig von der Groß- und Kleinschreibung, es sei denn, Sie führen einen binären Vergleich durch.

437
Marc B

Sie können den Wert und den übergebenen Parameter in Kleinbuchstaben schreiben:

SELECT * FROM `table` WHERE LOWER(`Value`) = LOWER("DickSavagewood")

Ein anderer (besserer) Weg wäre, den Operator COLLATE als in der Dokumentation zu verwenden.

102
Colin Hebert

BINARY BENUTZEN

Dies ist eine einfache Auswahl

SELECT * FROM myTable WHERE 'something' = 'Something'

= 1

Dies ist eine Auswahl mit Binär

SELECT * FROM myTable WHERE BINARY 'something' = 'Something'

oder

SELECT * FROM myTable WHERE 'something' = BINARY 'Something'

= 0

48
Someone

Vergleiche sind Groß-/Kleinschreibung wird nicht berücksichtigt, wenn die Spalte eine Kollatierung verwendet, die mit _ci endet (z. B. defaultlatin1_general_ci), und sie sind Groß- und Kleinschreibung beachten, wenn die Spalte eine Kollatierung welche verwendet endet mit _cs oder _bin (wie z. B. utf8_unicode_cs und utf8_bin). 

Überprüfen Sie die Sortierung

Sie können Ihre server -, database - und connection -Kollatierungen überprüfen, indem Sie Folgendes verwenden:

mysql> show variables like '%collation%';
+----------------------+-------------------+
| Variable_name        | Value             |
+----------------------+-------------------+
| collation_connection | utf8_general_ci   |
| collation_database   | latin1_swedish_ci |
| collation_server     | latin1_swedish_ci |
+----------------------+-------------------+

und Sie können Ihre table -Kollatierung überprüfen, indem Sie Folgendes verwenden:

mysql> SELECT table_schema, table_name, table_collation 
       FROM information_schema.tables WHERE table_name = `mytable`;
+----------------------+------------+-------------------+
| table_schema         | table_name | table_collation   |
+----------------------+------------+-------------------+
| myschema             | mytable    | latin1_swedish_ci |

Sortierung ändern

Sie können Ihre Datenbank-, Tabellen- oder Spaltensortierung wie folgt ändern:

-- Change database collation
ALTER DATABASE `databasename` DEFAULT CHARACTER SET utf8 COLLATE utf8_bin;

-- or change table collation
ALTER TABLE `table` CONVERT TO CHARACTER SET utf8 COLLATE utf8_bin;

-- or change column collation
ALTER TABLE `table` CHANGE `Value` 
    `Value` VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_bin;

Ihre Vergleiche sollten jetzt die Groß- und Kleinschreibung berücksichtigen.

27
ostrokach

Der Zeichenfolgenvergleich in der WHERE-Angabe unterscheidet nicht zwischen Groß- und Kleinschreibung. Sie könnten versuchen, mit zu vergleichen

WHERE `colname` = 'keyword'

oder

WHERE `colname` = 'KeyWord'

und Sie erhalten das gleiche Ergebnis . Dies ist das Standardverhalten von MySQL.

Wenn Sie möchten, dass der Vergleich die GroßKleinschreibung berücksichtigt -/ist, können Sie COLLATE wie folgt hinzufügen:

WHERE `colname` COLLATE latin1_general_cs = 'KeyWord'

Diese SQL würde mit diesem einen anderen Ergebnis ergeben: WHERE colname COLLATE latin1_general_cs = 'Schlüsselwort'

latin1_general_cs ist in der meisten Datenbank üblich oder wird standardmäßig sortiert.

25
Ifan Iqbal

Die von Ihnen gewählte Kollatierung legt fest, ob Sie die Groß- und Kleinschreibung beachten.

16
chuck taylor

Bei der Standardeinstellung wird die Groß- und Kleinschreibung nicht beachtet, jedoch Die nächstwichtigste Sache: Sie sollten einen Blick darauf werfen, wie die Tabelle erstellt wurde. An erster Stelle, da Sie die Empfindlichkeit der Groß- und Kleinschreibung angeben können, wenn Sie die Tabelle erstellen. 

Das folgende Skript erstellt eine Tabelle. Unten steht "COLLATE latin1_general_cs". Dass cs am Ende bedeutet, unterscheidet zwischen Groß- und Kleinschreibung. Wenn Sie möchten, dass Ihre -Tabelle nicht zwischen Groß- und Kleinschreibung unterscheidet, würden Sie entweder den -Part auslassen oder "COLLATE latin1_general_ci" verwenden.

   CREATE Table PEOPLE (

       USER_ID  INTEGER UNSIGNED NOT NULL AUTO_INCREMENT,

       FIRST_NAME  VARCHAR(50) NOT NULL,
       LAST_NAME  VARCHAR(50) NOT NULL,

       PRIMARY KEY (USER_ID)

   )

   ENGINE=MyISAM DEFAULT CHARACTER SET latin1
    COLLATE latin1_general_cs AUTO_INCREMENT=0;

Wenn Ihr Projekt so ist, dass Sie Ihre eigene -Eigene Tabelle erstellen können, ist es sinnvoll, Ihre case-Empfindlichkeitseinstellung beim Erstellen der Tabelle anzugeben. 

9
Ken Johnson

SQL Select unterscheidet nicht zwischen Groß- und Kleinschreibung.

Dieser Link kann Ihnen zeigen, wie Sie die Groß- und Kleinschreibung beachten: http://web.archive.org/web/20080811231016/http://sqlserver2000.databases.aspfaq.com:80/how-can-i-make- meine-SQL-Abfragen-Groß Kleinschreibung.html - /

4
Jacob Nelson

Versuche es mit: 

order by lower(column_name) asc;
2
VS-java

Beachten Sie auch, dass bei Tabellennamen die Groß- und Kleinschreibung unter Linux beachtet wird, es sei denn, Sie setzen die Anweisung lower_case_table_name config auf 1. Dies liegt daran, dass Tabellen durch Dateien dargestellt werden, bei denen die Groß- und Kleinschreibung unter Linux beachtet wird. 

Beachten Sie insbesondere die Entwicklung unter Windows, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird, und die Bereitstellung in der Produktion, wo sie sich befindet. Zum Beispiel:

"SELECT * from mytable" 

gegen Tabelle myTable wird in Windows erfolgreich sein, schlägt jedoch in Linux erneut fehl, sofern die oben angegebene Direktive nicht gesetzt ist.

Referenz hier: http://dev.mysql.com/doc/refman/5.0/de/identifier-case-sensitivity.html

2
Wes Grant

Bei Zeichenfolgenfeldern mit gesetztem Binärflag wird immer zwischen Groß- und Kleinschreibung unterschieden. Wenn bei der Suche nach einem nicht binären Textfeld zwischen Groß- und Kleinschreibung unterschieden werden muss, gehen Sie wie folgt vor: SELECT 'test' REGEXP BINARY 'TEST' AS RESULT;

0
user2288580

Sie können es probieren. Ich hoffe es wird nützlich sein.

SELECT * FROM `table` WHERE `Value` COLLATE latin1_general_cs = "DickSavagewood"
0
Zahid