如何在<cfquery>?</cfquery>的WHERE子句中提取子字符串

时间:2014-07-07 23:49:09

标签: sql ms-access coldfusion

是否可以在ColdFusion中的WHERE子句中或在查询查询中提取子字符串?作为一个例子,我试图使用以下查询来查找域&#34; comcast.net&#34;的所有电子邮件地址。 (即电子邮件地址中&#34; @&#34;之后的所有内容)。我正在查询MS-Access数据库表。

<cfquery name="test" datasource="membership">
      SELECT email_address
      FROM tblMembers
      WHERE MID(email_address, INSTR(email_address, '@') + 1) = 'comcast.net'
</cfquery>

如果我尝试将其作为查询,我会收到错误消息&#34; [Macromedia] [SequeLink JDBC驱动程序] [ODBC套接字] [Microsoft] [ODBC Microsoft Access驱动程序]条件表达式中的数据类型不匹配。&# 34;

如果我将其作为查询查询尝试,我会收到错误消息&#39;遇到&#34; MID(email1,。不正确的条件表达式,预期的[like | null | between | in | comparison]之一条件,&#39;

如果找到有用的东西,我会非常感激!谢谢你的帮助!

1 个答案:

答案 0 :(得分:4)

您可以使用right()功能来完成此操作。如果在将数据放入数据库时​​没有删除尾随空格,则可以使用trim函数

<cfquery name="test" datasource="membership">
  SELECT email_address
  FROM tblMembers
  WHERE right(email_address, 11) = 'comcast.net'
</cfquery>

您也可以使用like运算符,但上述选项很可能更快。

<cfquery name="test" datasource="membership">
  SELECT email_address
  FROM tblMembers
  WHERE email_address LIKE '*comcast.net'
</cfquery>

如果用户提供的是某些内容,请务必确保您使用cfqueryparam