Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在informix中将一个引号符号替换为两个引号_Informix_4gl - Fatal编程技术网

在informix中将一个引号符号替换为两个引号

在informix中将一个引号符号替换为两个引号,informix,4gl,Informix,4gl,我正在使用informix-4gl。我的程序将从一个表向多个表添加和更新用户信息。如果用户提供的信息包含“'”符号或单个引号,例如采购商名称或用户地址。我的问题是在更新表时,包含单引号符号的信息将不会更新。现在我发现必须有双引号才能输入不同联机服务器中的值。现在,我要将单引号更改为双引号。我尝试过这样更改代码,但它只能读取单引号 LET rmks_lgth = LENGTH(p_crsell.crse_purc_nme) FOR a = 1 TO rmks_lgt

我正在使用informix-4gl。我的程序将从一个表向多个表添加和更新用户信息。如果用户提供的信息包含“'”符号或单个引号,例如采购商名称或用户地址。我的问题是在更新表时,包含单引号符号的信息将不会更新。现在我发现必须有双引号才能输入不同联机服务器中的值。现在,我要将单引号更改为双引号。我尝试过这样更改代码,但它只能读取单引号

          LET rmks_lgth = LENGTH(p_crsell.crse_purc_nme)    
  FOR a = 1 TO rmks_lgth                          
    IF p_crsell.crse_purc_nme[a] = "'" THEN       
     LET p_crsell.crse_purc_nme[a] = "''"        
   END IF                                        
  END FOR              
我试图更改代码以生成双引号。对于包含“'”引号符号的每个输入,引号必须是双引号

    LET rmks_lgth = LENGTH(p_crsell.crse_purc_nme)    
  FOR a = 1 TO rmks_lgth 
  FOR b = 1 TO rmks_lgth                         
    IF p_crsell.crse_purc_nme[a] = "'" THEN       
     LET p_crsell.crse_purc_nme[a] = "'"  
     LET p_crsell.crse_purc_nme[b] = "'"      
   END IF                                        
  END FOR        
  END FOR      
上面的代码只会产生输出

''

在没有其他值的情况下。
有人说ceinmark建议“我需要创建一个4GL函数来找到引号,然后在找到它的地方将字符串一分为二,并用字符串的这两部分连接“新”引号。”

Rahim,下面的解决方案仅适用于4GL代码,不适用于Informix SQL语句。 可以很容易地将其重写为Informix存储过程(但我知道作为SP,这不会解决您的问题):


Rahim,下面的解决方案仅适用于4GL代码,不适用于Informix SQL语句。 可以很容易地将其重写为Informix存储过程(但我知道作为SP,这不会解决您的问题):


嗨,Ceinmart,我想问一下。。实际上,LET p_sql=arg_val(1)的函数是什么?引用4GL参考手册,您可以免费下载:
arg_val()函数从调用Current4GL应用程序的命令行返回指定参数。它还可以返回当前4GL程序的名称
谢谢你ceinmart,你的回答和我在互联网上的谷歌一样。我认为它还有另一个功能。好的,非常感谢..嗨ceinmart,我想问。。实际上,LET p_sql=arg_val(1)的函数是什么?引用4GL参考手册,您可以免费下载:
arg_val()函数从调用Current4GL应用程序的命令行返回指定参数。它还可以返回当前4GL程序的名称
谢谢你ceinmart,你的答案和我在互联网上的谷歌一样。我认为它还有另一个功能。好的,非常感谢。。
MAIN
  DEFINE p_sql varCHAR(200)
  DEFINE p_dest varCHAR(200)
  DEFINE i,x,z INTEGER

  LET p_sql = arg_val(1)

  LET x=1
  LET p_dest=''
  FOR i = 1 TO length(p_sql)
    IF p_sql[i,i] = '"' THEN
      LET p_dest=p_dest,p_sql[x,i],'"'
      LET x=i+1
    END IF
  END FOR

  LET i=length(p_sql)
  IF x < i THEN
    LET p_dest=p_dest,p_sql[x,i]
  END IF

  DISPLAY p_sql
  DISPLAY p_dest
END MAIN
$ fglgo x "test 'one' "
test 'one'
test 'one'

$ fglgo x 'test "one" '
test "one"
test ""one""

$ fglgo x 'test "one"'
test "one"
test ""one""

$ fglgo x 'test "one" x'
test "one" x
test ""one"" x