在不选择第一个字符时尝试选择字段时出错

时间:2018-06-04 12:25:31

标签: php html sql

我收到错误:关键字“AS”附近的语法不正确。 我正在尝试从我的MSSQL数据库中选择一列,而不是选择该字段的第一个字符。 下面是代码(在PHP中):

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

5 个答案:

答案 0 :(得分:2)

首先。请小心。您的代码看起来容易受到SQL注入攻击。更好地使用参数化查询。

不需要最后的第二个“AS”。

以这种方式尝试:

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

或者更好:

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

Read more about parameterized queries here

当Revlv列仅包含空字符串时,请务必小心。在这种情况下,查询将失败。

答案 1 :(得分:1)

试试这个:

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

答案 2 :(得分:1)

您需要在查询的AS部分之后放置SELECT,而不要将其放在查询的末尾。尝试这样做

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

SOURCE

答案 3 :(得分:1)

由于所有答案都只是修复语法而不是修复逻辑:

除了第一个字符外,没有必要使用RIGHT + LEN来提取所有内容,只需使用

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

由于SQL Server的语法略有不同:

substring(Revlv, 2, 8000) AS Revlv2 -- T-SQL to extract everything after the first character

答案 4 :(得分:0)

试试这个。

$sql="SELECT RIGHT(Revlv, LEN(Revlv)-1) AS Revlv2
FROM tablename where['objkt']='$search'";