我收到错误:关键字“AS”附近的语法不正确。 我正在尝试从我的MSSQL数据库中选择一列,而不是选择该字段的第一个字符。 下面是代码(在PHP中):
$sql = "SELECT RIGHT(Column, LEN(Column) - 1) FROM Table WHERE [Column] ='".$search."' AS Column2";
答案 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."' ";
答案 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'";