1.为什么SELECT语句里列出的全部字段,除了使用汇总函数的之外,全部都要出现在GROUP BY语句里?
2.SELECT PROD_DESC,
         INSTR(PROD_DESC, 'D', 1 , 2)
  FROM PRODUCTS_TBL
报错:
14:49:27 SELECT PROD_DESC, INSTR(PROD_DESC, 'D', 1 , 2) FROM PRODUCTS_TBL LIMIT 0,  1000 Error Code: 1582. Incorrect parameter count in the call to native function 'INSTR'
请问怎么回事,谢谢。

解决方案 »

  1.   

    1、SQL语法要求;
    2、不知道你要达到什么目的
    INSTR(str,substr) Returns the position of the first occurrence of substring substr in string str. This is the same as the two-argument form of LOCATE(), except that the order of the arguments is reversed. mysql> SELECT INSTR('foobarbar', 'bar');
            -> 4
    mysql> SELECT INSTR('xbar', 'foobar');
            -> 0
      

  2.   

    INSTR(str,substr) 
    返回字符串 str 中子字符串的第一个出现位置。这和LOCATE()的双参数形式相同,除非参数的顺序被颠倒。只能有两个参数
      

  3.   

    1.为什么SELECT语句里列出的全部字段,除了使用汇总函数的之外,全部都要出现在GROUP BY语句里?没什么特别的原因,这是SQL语法的标准。 解释这个问题和解释为什么中国人说中文一样非常难以找到道理。
      

  4.   

    2.SELECT PROD_DESC,
             INSTR(PROD_DESC, 'D', 1 , 2)
      FROM PRODUCTS_TBL
    报错:
    14:49:27 SELECT PROD_DESC, INSTR(PROD_DESC, 'D', 1 , 2) FROM PRODUCTS_TBL LIMIT 0,  1000 Error Code: 1582. Incorrect parameter count in the call to native function 'INSTR'
    INSTR只有三个参数。
      

  5.   

    1、语法要求
    2、SELECT PROD_DESC,
             INSTR(PROD_DESC, 'D', 1 , 2)  FROM PRODUCTS_TBL
    只能有三个参数,你现在是四个参数所以是错误的。