2016-07-29 17 views
0

Also habe ich eine Tabelle mit einer bestimmten Spalte des Typs VARCHAR (256). Jetzt möchte ich die Zeile (n) dieser Spalte mit den meisten Kommas finden (da die Spalte Spalten getrennte Werte enthält). Wie würde ich dies tun (unter der Annahme einer MySQL-Datenbank)?Zeile mit den meisten Vorkommen eines Zeichens MySQL

Ich dachte, etwas entlang der Linien von

SELECT LEN(<column_name>) 
FROM <table_name> 
WHERE Replace(<column_name>, ...... 
ORDER BY DESC 
LIMIT 1; 

ich nicht eine Tonne Erfahrung mit MySQL (oder SQL im Allgemeinen) und ich konnte nicht viel Dokumentation finden, die hilfreich war, so würde ich Ich schätze jede Hilfe bei der Beendigung dieses Vorgangs sehr.

Antwort

4

Subtrahieren Sie die Länge der Spalte mit der Länge der Spalte nach dem Ersetzen , durch '', um die Anzahl der Kommas zu erhalten. Sortieren Sie dann nach der berechneten Spalte, um die erforderlichen Zeilen zu erhalten.

SELECT t.*,LEN(column_name) - LEN(REPLACE(column_name,',','')) num_commas 
FROM table_name t 
ORDER BY num_commas DESC 
LIMIT 1 

Edit: Wie @Strawberry im Kommentar darauf hingewiesen, die Abfrage oben würde eine beliebige Zeile aus der Tabelle im Fall eines Unentschiedens abholen. Verwenden Sie

+1

Perfekt, danke! –

+0

Yep, aber beachten Sie, dass dies nicht Krawatten für den 1. Platz finden wird – Strawberry

0

, um alle Zeilen zu erhalten, wenn eine Bindung vorhanden ist.

select max(length(password)-length(replace(password,'$',''))) from [YOUR TABLE]; 

Hoffe, das hilft.

Verwandte Themen