如何在CFML中显示含撇号的列名(如isNotBM'd)
解决CFML中显示带撇号列名的问题
方法1:修正显示代码的语法错误
你当前的显示代码里多了一个多余的右括号,这会导致语法错误,无法正确解析列名。把代码改成这样:
<cfoutput query="get"> <TR class="tableItems"> <TD>#["isNotBM'd"]#</TD> </TR> </cfoutput>
或者直接通过查询对象的键访问:
<cfoutput query="get"> <TR class="tableItems"> <TD>#get["isNotBM'd"]#</TD> </TR> </cfoutput>
方法2:给列名起别名(更稳妥的方案)
如果不想在CFML里处理特殊列名,建议在调用存储过程时给该列重命名为不带特殊字符的别名,后续调用更方便。以SQL Server为例,修改CFQUERY语句:
<CFQUERY name="get" DATASOURCE="Maste"> SELECT *, [isNotBM'd] AS isNotBM -- 给带撇号的列起别名 FROM OPENQUERY(LOCAL_SERVER, 'exec DB01.Log.Bmarking_History') </CFQUERY>
显示时直接用别名即可:
<cfoutput query="get"> <TR class="tableItems"> <TD>#isNotBM#</TD> </TR> </cfoutput>
注意:
LOCAL_SERVER需替换为你的数据库服务器名称,本地实例可使用(local)。也可以用临时表的方式处理:
<CFQUERY name="get" DATASOURCE="Maste"> DECLARE @temp TABLE ( -- 定义存储过程返回的所有列结构,按需调整字段类型 isNotBM BIT -- 其他返回列... ) INSERT INTO @temp EXEC DB01.Log.Bmarking_History SELECT *, [isNotBM'd] AS isNotBM FROM @temp </CFQUERY>
方法3:修改存储过程(若有权限)
如果拥有存储过程的修改权限,直接在存储过程中将列名改为不带撇号的名称(比如isNotBM),从根源上避免特殊字符带来的问题。
内容的提问来源于stack exchange,提问作者sangeeta bhat
相关产品推荐
相关产品推荐

