Otrzymuję błąd: nieprawidłowa składnia w pobliżu słowa kluczowego "jako". Próbuję wybrać kolumnę z mojej bazy danych MSSQL, nie wybierając pierwszego znaku tego pola. Poniżej znajduje się kod (w ramach PHP):

$sql = "SELECT RIGHT(Column, LEN(Column) - 1) FROM Table WHERE [Column] ='".$search."' AS Column2";
0
Max Theuws 4 czerwiec 2018, 15:25

5 odpowiedzi

Najlepsza odpowiedź

Spróbuj tego:

    $sql = "SELECT RIGHT(Column, LEN(Column) - 1) AS Column2 FROM Table WHERE [Column] ='".$search."' ";
1
Max Theuws 4 czerwiec 2018, 13:54

Po pierwsze. Proszę bądź ostrożny. Twój kod wygląda na podatny na wtrysk SQL. Lepiej użyj paramerowanych zapytań.

Drugi "jak" na końcu nie jest potrzebny.

Spróbuj tego w ten sposób:

SELECT RIGHT(Revlv, LEN(Revlv) - 1) AS Revlv2 FROM table_name WHERE [Objkt] ='".$search."'

Lub jeszcze lepiej:

SELECT RIGHT(Revlv, LEN(Revlv) - 1) AS column_name FROM table_name WHERE [Objkt] = ?

Przeczytaj więcej o parametryzowanych zapytaniach tutaj

Uważaj również, gdy kolumna Revlv zawiera tylko pusty ciąg. Zapytanie zawiedzie w tej sprawie.

2
Max Theuws 4 czerwiec 2018, 12:51

Ponieważ wszystkie odpowiedzi po prostu naprawić składnię zamiast naprawić logikę:

Nie ma potrzeby korzystania z prawej strony + Len, aby wyodrębnić wszystko, ale pierwszym znakiem, po prostu używać

substring(Revlv from 2) AS Revlv2 -- Standard SQL to extract everything after the first character

Ponieważ SQL Server ma nieco inną składnię:

substring(Revlv, 2, 8000) AS Revlv2 -- T-SQL to extract everything after the first character
1
dnoeth 4 czerwiec 2018, 12:41

Musisz umieścić AS po części zapytania {x1}} nie umieszcza go na końcu zapytania. Spróbuj to zrobić

    $sql = "SELECT RIGHT(Column, LEN(Column) - 1) AS Column2 FROM Table WHERE [Column] ='".$search."' ";

ŹRÓDŁO

1
Max Theuws 4 czerwiec 2018, 12:43

Spróbuj tego.

$sql="SELECT RIGHT(Revlv, LEN(Revlv)-1) AS Revlv2
FROM tablename where['objkt']='$search'";
0
Max Theuws 4 czerwiec 2018, 15:20