2016-07-22 6 views
-2

ich kopiert habe und eine SQL-Anweisung eingefügt, die einfach eine Spalte in der Tabelle ergänzt:versteckte Zeichen in SQL-Spalte

ALTER TABLE `users` ADD COLUMN `favourites​` TEXT; 

jedoch, wo ich kopiert und eingefügt, der favourites Namen hat, wie einige es geschafft, hebe einen versteckten Charakter auf.

Ich habe das versteckte Zeichen im obigen Beispiel für Sie zu sehen/oder nicht sehen, wie es sein kann !!

Es ist favourites? mit, was ich denke, ist ein Fragezeichen, aber kein normales?

DAS PROBLEM: Ich muss diese Spalte löschen und manuell neu hinzufügen, so dass das versteckte Zeichen nicht vorhanden ist. Das Problem ist, dass jede SQL-Anweisung, die ich mache, den Spaltennamen favourites wegen des dummen versteckten Zeichens nicht erkennt!

Hat jemand eine Idee, wie man das umgehen kann?

+0

Nicht ganz sicher, warum Sie Antworten ablehnen, Menschen, die versuchen, Sie hier zu helfen, müssen einige Mengen von Raten und natürlich die Antworten möglicherweise überhaupt nicht funktionieren. – e4c5

+0

@ e4c5 Da Kommentare dazu dienen, Antworten zu raten, finden Sie mehr heraus ... Antworten sind Antworten. Das solltest du besser wissen. Ich habe diejenigen, die die Frage eindeutig gelesen haben, aufgewertet und diejenigen abgelehnt, die dies nicht getan haben. Genau das solltest du tun. – AdamJeffers

Antwort

0

Vielleicht öffnen Sie das Informationsschema der Tabelle und kopieren Sie den Spaltennamen von dort? Ich weiß nicht, welche Datenbank Sie verwenden. Bitte aktualisieren Sie für weitere Informationen.

Wenn Sie Zugriff auf phpMyAdmin haben oder, wenn Sie ein kleines Skript erstellen können dieses Skript auszuführen:

SELECT COLUMN_NAME, FROM INFORMATION_SCHEMA.COLUMNS 
    WHERE table_name = 'your_tbl_name' 

ODER

SHOW COLUMNS 
    FROM 'your_tbl_name 

und die Spaltennamen von der Seite kopieren.

nächsten, können Sie diese Spalte fallen

alter table your_tbl_name drop column column_name; 

verwenden und Sie bereits wissen, wie eine Spalte in MySQL hinzufügen, so, denke ich, dass Ihr Problem lösen sollte.

Ich hoffe, Sie wissen, dass Sie nicht kommentieren können, wenn Ihr Ruf unter 50 ist und wenn Sie nicht genug Informationen zur Verfügung stellen, müssen diejenigen, die tatsächlich eine Antwort für Sie haben, aber unter 50 rep, müssen poste es in Antworten. oder möchten Sie diejenigen, die 50 rep als Kandidaten sind, um Ihnen zu helfen, beseitigen?

+0

Ich benutze MySQL – AdamJeffers

0

Um eine Spalte zu löschen können Sie:

alter table <tblname> drop column <colname> 

und dann nach der Spalte Löschen Sie die Spalte durch das Schreiben unter Code hinzufügen:

ALTER TABLE users ADD COLUMN favourites​ TEXT; 
+0

Wie ich schon sagte, Sie können nicht auf den colnam verweisen, weil der Spaltenname nicht erkannt wird! – AdamJeffers

+0

Brauchen Sie etwas wie Drop-Spalte wie 'favor%' oder etwas, aber das funktioniert nicht – AdamJeffers

1

Sie die gleiche Show Nutzung

SHOW COLUMNS FROM your_table; 

für den Spaltennamen und dann kopieren Sie die Spalte, die Sie benötigen Ihr Löschbefehl

alter table your_table drop column your_column_copied 

und die Spalte mit dem richtigen Namen hinzufügen

alter table your_table add column your_column 

sonst, wenn nicht möglich ist, erhält die column_name, können Sie eine temporäre Tabelle ohne die falsche Spalte mit create/select Befehl erstellen

create table (col1, col2, col3) 
select col1,col2, col3 
from you_table 

dann die Original-Tabelle löschen und die temporäre Tabelle umbenennen und zuletzt fügen Sie Ihre Spalte mit richtigen Namen

+0

Funktioniert nicht. Show Tabelle gibt "Favoriten?" Wenn das versteckte Zeichen als Fragezeichen angezeigt wird, wird beim Kopieren und Verwenden dieses Spaltennamens nur ein Syntaxfehler angezeigt! – AdamJeffers

+0

Unbekannte Spalte "Favoriten?" in 'Feldliste' – AdamJeffers

+0

Ich habe die Antwort aktualisieren .. mit einem trivialen Vorschlag – scaisEdge

-1

Einige Möglichkeiten:

  • phpMyAdmin
  • mit einem Werkzeug direkt auf die Datenbank wie navicat etc
1

Sie dynamische Abfrage sprechen verwenden:

DECLARE @sql nvarchar(800) 

SELECT @sql = 'ALTER TABLE users DROP COLUMN ' + COLUMN_NAME 
    FROM INFORMATION_SCHEMA.COLUMNS where TABLE_NAME = 'users' and COLUMN_NAME LIKE '%favour%' 

EXEC sp_executesql @sql 
+0

Das OP impliziert MySQL-basierte Lösung, nicht MS SQL Server. 'sp_executesql' ist in MySQL nicht verfügbar. Trotzdem gut denken ... –

1

Sie erhalten der Spaltenname, indem Sie INFORMATION_SCHEMA abfragen und die Anweisung mit dem erhaltenen Spaltennamen vorbereiten. Etwas wie das:

DECLARE @StrangeColumnName NVARCHAR(16) := '' 

SELECT @StrangeColumnName := COLUMN_NAME 
FROM INFORMATION_SCHEMA.COLUMNS 
WHERE TABLE_NAME = 'users' AND COLUMN_NAME LIKE 'favourites%' 

DECLARE @SqlText NVARCHAR(32) := 'ALTER TABLE status DROP COLUMN ?' 
EXECUTE @SqlText USING @StrangeColumnName 
+0

Wählen Sie 'HEX (COLUMN_NAME)', damit wir herausfinden können, was falsch ist. –