【问题标题】:Get username/account name from email address从电子邮件地址获取用户名/帐户名
【发布时间】:2011-08-24 14:29:36
【问题描述】:

客户表包含名字、姓氏、电子邮件和部门。我需要将电子邮件地址的用户名部分(即@之前的所有内容)与会话的用户名进行比较以验证真实性。

如何构建我的 cfquery 以将电子邮件地址的期望部分与会话变量 casuser 进行比较?

<cfquery name="getUsername" dsn="myDSN">    
select firstname, lastname, email, department, organization, rank
            from client
            where email= '#casuser#'
</cfquery>

数据库位于使用 CF8 的 SQL Server 2008 上。

谢谢。

【问题讨论】:

    标签: sql sql-server coldfusion coldfusion-8


    【解决方案1】:

    您几乎需要使用like 语句并比较包括@ 符号在内的任何内容。所以应该是这样的:

    select firstname, lastname, email, department, organization, rank             
    from client             
    where email like '#casuser#@%'
    

    【讨论】:

    • 别忘了使用 。保持这些东西的安全
    • cfqueryparam 还将确保您的 SQL Server 缓存查询计划。轻松获得性能提升 FTW!
    【解决方案2】:

    Andrey 的方法显然没有任何问题,但如果您不想使用 like...

    email = getToken(casUser,1,"@");
    

    绝对包括 cfqueryparam

    【讨论】:

    • 我相信casUser 只包含一个名字,而不是一个电子邮件地址。所以在这种情况下LIKE 是必需的。
    • 所以需要反过来:WHERE getToken(email,1,'@') = '#casuser#'
    • 不,您不能在数据库列上使用 CF 函数。它需要是一个数据库字符串函数。但在这种情况下,我可能不会打扰。也可以使用LIKE ;)
    • @Leigh 抱歉,我误读了这个问题。我同意,对于 LIKE 可以轻松处理的事情,使用 udf 会有点矫枉过正。
    • @nykash - 是的。但是,如果它是相反的(将电子邮件变量与名称列匹配),那肯定是正确的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-25
    • 2013-08-16
    • 2018-03-06
    • 2013-05-08
    • 1970-01-01
    • 2022-08-08
    • 1970-01-01
    相关资源
    最近更新 更多