是否可以在ColdFusion中的WHERE子句中或在查询查询中提取子字符串?作为一个例子,我试图使用以下查询来查找域" comcast.net"的所有电子邮件地址。 (即电子邮件地址中" @"之后的所有内容)。我正在查询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;
如果找到有用的东西,我会非常感激!谢谢你的帮助!
答案 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
。