我现在有一个access数据库表'9005'如下
ID    Name    Names    
12    张三    张三-李四
13    林五    刘大-王二
15    林兵    林兵-刘洋
16    邓佳    吴大-小勇
......现在通过ADOconnection连接成功后。用SQL语句选出Names字段值中含有Name值的记录。(如第一条,Names[张三-李四]含有name[张三] 则选出,第二条则不选。)我用ADOconnection.execute('select * from [9005] where PATINDEX([name],[names])>0 '); //提示不支持patindex函数。patindex()是我在网上搜的SQL字符串函数。然后我又试着用delphi的函数strpoc(str1,str2)
ADOconnection.execute('select * from [9005] where strpoc([names],[name])<>nil');/同样提示不支持strpoc函数。我试着用此语句,也不行。
ADOconnection.execute('select * from [9005] where names like %name%')//也达不到预定的效果。无选出的记录。
请问一下:在这里用哪个函数还能完成此功能呢?
还有,DELPHI中类似ADOconnection.execute() 里支持哪些SQL函数啊?我试了一下简单的查询,建表,都没有问题。但一用到标准SQL的各种函数就提示不支持。查了DELPHI的帮助文件,里面根本没有说细介绍SQL语法的地方。我刚从VF,SQL SERVER转过来学DELPHI,很多语句直接拿过来都执行不了。微软的Microsoft.Jet.OLEDB.4.0的帮助文件很全。我也是用的这个通过ADO,连接的ACCESS数据库,可帮助里面的SQL涵数拿到DELPHI里面还是不支持。

解决方案 »

  1.   

    DELPHI中类似ADOconnection.execute() 里支持哪些SQL函数啊?这个和delphi没关系,跟你用的数据库有关系,delphi只负责拼装字符串
      

  2.   

    用adoquery 試一下
    adoquery1.close;
    adoquery1.sql.text:='select * from [9005] where names like %name%';
    adoquery1.open;
      

  3.   

    ADOconnection.execute('select * from [9005] where names like *name*')
    试试ACCESS的通配符和MSSQL不一样
      

  4.   

    用ADOQUERY连 adoconnection再写SQL,可以实现,ACCESS支持这样写
      

  5.   

    MSSQL有一个函数,你试一下吧select charindex('12','151267')
    -----
    查询结果
    ----
    无列名
    3
      

  6.   

    Connection的ExecSQl好像不返回数据吧,Query的ExecSql也不行,应该用Query的Open方法.Delphi的ADO组件只是对ADO的封装,支持哪些函数或语句是由驱动提供的.如你的情况使用的是  Microsoft.Jet.OLEDB.4.0,它提供的支持要比MSSQL少得多ACCESS支持LiKE,通配符: %代表所有,一个下划线代表一个字符
      

  7.   

    ODBC 标量函数
    Microsoft® Jet SQL 支持使用由 ODBC 为标量函数定义的语法。例如这一查询:SELECT DAILYCLOSE, DAILYCHANGE FROM DAILYQUOTE
    WHERE {fn ABS(DAILYCHANGE)} > 5凡是一种股票价格变化的绝对值大于 5 的列会返回。 ODBC 定义的标量函数的子集受支持。下表列出了受支持的函数。关于使函数包含于 SQL 语句的变元的描述和逸出语法的详尽解释,请看 ODBC文献。 字符串函数
    ASCII LENGTH RTRIM 
    CHAR LOCATE SPACE 
    CONCAT LTRIM SUBSTRING 
    LCASE RIGHT  UCASE 
    LEFT     
    数字函数
    ABS FLOOR SIN 
    ATAN LOG SQRT 
    CEILING POWER TAN 
    COS RAND MOD 
    EXP SIGN   
    时间和日期函数
    CURDATE DAYOFYEAR MONTH 
    CURTIME YEAR WEEK 
    NOW HOUR QUARTER 
    DAYOFMONTH MINUTE MONTHNAME 
    DAYOFWEEK SECOND DAYNAME 
    数据类型变换
    CONVERT 字符串文字能被转换成下列数据类型:SQL_FLOAT, SQL_DOUBLE, SQL_NUMERIC, SQL_INTEGER, SQL_REAL, SQL_SMALLINT, SQL_VARCHAR和 SQL_DATETIME. 
    请参阅
    为ODBC 访问配置 Microsoft Jet 数据库引擎
    我现在改用ODBC标量函数locate,系统还是提示不支持函数locate.