火鸟搜索并在所有列中找到一个字符串值

我需要查找表中的任何一列是否存在字符串值。能否在Firebird中自动创建过程或查询,在不明确列名的情况下执行这项工作?

列名可以通过这个查询来查找。

select RDB$RELATION_FIELDS.rdb$field_name as NC from RDB$RELATION_FIELDS where RDB$RELATION_FIELDS.rdb$relation_name = MY_Table_name。

我将使用一个类似于火鸟的程序。

http:/www.mssqltips.comsqlservertip1522searching-and-finding-a-string-value-in-all-columns-in-a-sql-server-table

谁能帮帮我?

— 编辑

SET TERM ^^ ;

CREATE PROCEDURE P_FINDSTRINGINTABLE (
  STRTOFIND VarChar(255), 
  TBLNAME VarChar(255))
 returns (
  SQLCOMMAND VarChar(25000))
AS
DECLARE VARIABLE condSTR VARCHAR(8000);
DECLARE VARIABLE columnName VARCHAR(8000);
begin
  sqlCommand = 'select * from '|| upper( :TBLNAME );

  condSTR = '';
  for select RDB$RELATION_FIELDS.rdb$field_name as NC from RDB$RELATION_FIELDS where RDB$RELATION_FIELDS.rdb$relation_name = upper( :TBLNAME )
  into  :columnName  
  do begin
     condSTR = condSTR||columnName||' LIKE ''%'||STRTOFIND||'%'' OR ';   
  end



  IF ( CHAR_LENGTH(condSTR) > 0 ) THEN 
  begin
     condSTR = ' where ' || left(condSTR, CHAR_LENGTH (condSTR)-3)  || ';';
     sqlCommand = sqlCommand|| condSTR;  
  end
  ELSE sqlCommand = sqlCommand||';' ;


end ^^


SET TERM ; ^^

好的…我已经为我的搜索创建了正确的sql字符串,现在,如果我执行这个Firebird存储过程,它将返回sql命令作为字符串。

有什么方法可以自动执行返回的select吗?

解决方案:

你可以通过使用以下方法来实现你想要的东西 EXECUTE STATEMENT 来创建一个视图,然后返回这些值。

举个例子说明我的意思。

sqlCommand = 'select * from '|| upper( :TBLNAME );

/* Rest of your code for creating the sqlCommand variable */

viewCommand = "RECREATE VIEW V_SEARCH_RESULTS AS " || sqlCommand;

EXECUTE STATEMENT viewCommand;

基本上你的存储过程P_FINDSTRINGINTABLE不会返回任何值,而是(重新)动态地创建一个名为V_SEARCH_RESULTS的视图。然后你所要做的就是在这个视图中进行选择来查看结果。

给TA打赏
共{{data.count}}人
人已打赏
解决方案

导入错误。pybind11和PCL加载DLL失败。

2022-4-21 16:09:14

解决方案

Nestjs错误。找不到模块'.app.controller'。

2022-4-21 16:09:16

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索