如何转义“=”作为列名的一部分?<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />如何转义“=”作为列名的一部分?
我需要实现一个“select where”语句,并将其构建为字符串,其中涉及多个列名称。 但是当它评估时,它试图将“=”解释为赋值。 我的列名称如下:“COND=TEMP”。
在我使用的脚本部分下面:
选择字符串= “:测试名称== benchNameToCompare” ;
//对于映射表中的每一列,如果列名是COND,则将其添加到选择条件中
为了( j = 1 , j <=列数, j ++,
当前数据表(关联映射表) ;
当前列名=关联映射表<<获取列名称() ;
如果(包含(当前列名[ j ] , “条件_” ) > 0 ,
价值=当前列名[ j ][我] ;
列名=当前列名[ j ] ;
选择字符串=选择字符串|| “&作为列(correlationMapTable,” ||字符(当前列名[ j ]) || “)==” ||字符(当前列名[ j ][我]) ;
) ;
) ;
选择字符串= “benchDataTable << 选择其中(” ||选择字符串|| “)” ;
评估(解析(选择字符串)) ; //如果我将“=”作为列名的一部分,则会出现抱怨。
工作台数据表<<子集((选定的行) ,输出表名称( “过滤长凳” )) ;
提前致谢!
回复:如何转义“=”作为列名的一部分?是的,引号。谢谢你的捕获。
要了解有关转义字符和 JSL 细微差别的更多信息,您可以参考编写得非常好的脚本指南。帮助>>书籍>>脚本指南。(转义字符位于第 87 页)。如果您只是想了解语法,脚本索引会更有帮助。帮助>>脚本索引。
有几点需要指出,
对于 If() 语句中的数字,JSL 对 0 以外的任何值响应为 true。因此如果(包含(当前列名[ j ] , “条件_” ) > 0,等于如果(包含(当前列名[ j ] , “条件_” ) ,
这:
//对于映射表中的每一列,如果列名是COND,则将其添加到选择条件中
为了( j = 1 , j <=列数, j ++,
当前数据表(关联映射表) ;
当前列名=关联映射表<<获取列名称() ;
如果(包含(当前列名[ j ] , “条件_” ) > 0 ,
价值=当前列名[ j ][我] ;
列名=当前列名[ j ] ;
会更好写:
//对于映射表中的每一列,如果列名是COND,则将其添加到选择条件中
为了( j = 1 , j <=列数, j ++,
列名 = 列(相关映射表,j) <<获取姓名;
如果(包含(列名, “条件_” ) ,
回复:如何转义“=”作为列名的一部分?嘿,布雷诺索,
是的,我接触 JSL 的时间还不够长,还不知道转义字符的起源,但它们确实以“\!”开头。要在字符串中插入换行符,请使用“\!n”。为了防止 JMP 将引号视为字符串的结尾,请将其设为 \!”。(我认为 msharp 的意思是“您需要转义的是引号”)。
而且,是的,从其他语言转向 JSL 可能会有点令人反感;-)。
哈特哈,
埃里克
回复:如何转义“=”作为列名的一部分?你好,姆夏普,
感谢您抽出时间回复。 那么您能否澄清一下所需的转义序列是 \! <列名称位于此处> \! ?
作为一名 C# 程序员,刚学 JSL 就头疼:)
问候,
乙
回复:如何转义“=”作为列名的一部分?老实说,这个剧本有很多问题。一想到调试就头疼。
所以我不会,但本质上你的问题是这样的:
= 不需要转义 你需要转义的是插入语引号。又名:
评估(解析( “dt << 选择其中(列(”条件=温度“)==2)” )) ;
需要成为:
评估(解析( "dt << 选择其中(列(\!"Cond=Temp\!") == 2)" )) ;