亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? myldbexpressions.pas

?? 一個本地database引擎,支持中文T_Sql查詢,兼容DELPHI標準數據庫控件
?? PAS
?? 第 1 頁 / 共 5 頁
字號:
                   IndexDef:       TMYLDBIndexDef;
                   Expression:  TMYLDBExpression); override;
    // add checks to multi-field index scan condition
    procedure ExtendIndexScanCondition(
                   ScanCondition: TMYLDBScanSearchCondition;
                   IndexDef:      TMYLDBIndexDef;
                   Expression:    TMYLDBExpression); override;
  end;


  TMYLDBExprNodeArithmetic = class(TMYLDBExprNode)
   protected
    // SUB operation
    procedure SubData;
    // ADD operation
    procedure AddData;
    // MUL operation
    procedure MulData;
    // DIV operation
    procedure DivData;
    // MYLDB operation
    procedure GetMYLDBValue;
    // ACOS operation
    procedure GetACOSValue;
    // ASIN operation
    procedure GetASINValue;
    // ATAN operation
    procedure GetATANValue;
    // CEIL operation
    procedure GetCEILValue;
    // COS operation
    procedure GetCOSValue;
    // EXP operation
    procedure GetEXPValue;
    // FLOOR operation
    procedure GetFLOORValue;
    // LOG operation
    procedure GetLOGValue;
    // POWER operation
    procedure GetPOWERValue;
    // RAND operation
    procedure GetRANDValue;
    // ROUND operation
    procedure GetROUNDValue;
    // SIGN operation
    procedure GetSIGNValue;
    // SIN operation
    procedure GetSINValue;
    // SQR operation
    procedure GetSQRValue;
    // SQRT operation
    procedure GetSQRTValue;
   public
    // Return Data Value
    function GetDataValue: TMYLDBVariant;  override;
    // get value data type
    function GetDataType: TMYLDBAdvancedFieldType; override;

  end;


  TMYLDBExprNodeAggregated = class(TMYLDBExprNode)
   private
    count: integer;
    distinct: Boolean;
    AvgSum: TMYLDBVariant;
   public
    // Constructors
    constructor Create(Op: TMYLDBDataOperator); overload;
    constructor Create(Op: TMYLDBDataOperator;
                       distinct: boolean;
                       Node: TMYLDBExprNode); overload;
    // Destructor
    destructor Destroy; override;
    // Return Data Value
    function GetDataValue: TMYLDBVariant;  override;
    // return Type of Data
    function GetDataType: TMYLDBAdvancedFieldType; override;
    // return Size of Data (for strings and arrays)
    function GetDataSize: Integer; override;
    // is expression contains aggregated function
    function IsAggregated: Boolean; override;
    function IsAggregatedCountAll: Boolean; override;
    function CanBeAssigned(AO, ParentQueryAO: TMYLDBAO;
                           ParentCursor: TMYLDBCursor; ForHavingClause: Boolean = False): Boolean; override;
    // Init for aggregated functions
    procedure Init; override;
    // Accumulate for group functions
    procedure Accumulate; override;
    procedure SetCountAll(RecordCount: Integer); override;
    // check if agregate expr, const or only grouped fields are used
    function CanBeUsedInGroupBy(GroupByFields: String): Boolean; override;
  end;


  TMYLDBExprNodeCast = class(TMYLDBExprNode)
  private
    FCastType:      TMYLDBAdvancedFieldType;  // Type for convertation
    LCastSizeNode:  TMYLDBExprNode;
   public
    constructor Create(Node:          TMYLDBExprNode;
                       CastType:      TMYLDBAdvancedFieldType;
                       CastSizeNode:  TMYLDBExprNode = nil); overload;
    // Return Data Value
    function GetDataValue: TMYLDBVariant;  override;
    // return Type of Data
    function GetDataType: TMYLDBAdvancedFieldType; override;
    // return Size of Data (for strings and arrays)
    function GetDataSize: Integer; override;
  end;


  TMYLDBExprNodeCase = class(TMYLDBExprNode)
   private
    FWhenExpressions: TList;
    FResultExpressions: TList;
    FElseResultExpression: TMYLDBExprNode;
    FInputExpression: TMYLDBExprNode;
    FCoalesceNodes: TMYLDBExprNodeArray;
    FIsCoalesceExpression: Boolean;
   public
    // Constructors
    procedure CreateInit;
    constructor CreateSimpleCase(InputExpression: TMYLDBExprNode);
    constructor CreateSearchedCase;
    constructor CreateCoalesce(Nodes: TMYLDBExprNodeArray);
    // Destructor
    destructor Destroy; override;

    // Return Data Value
    function GetDataValue: TMYLDBVariant;  override;
    // return Type of Data
    function GetDataType: TMYLDBAdvancedFieldType; override;
    // return Size of Data (for strings and arrays)
    function GetDataSize: Integer; override;

    procedure AddWhenExpression(Node: TMYLDBExprNode);
    procedure AddResultExpression(Node: TMYLDBExprNode);
    procedure SetElseResultExpression(Node: TMYLDBExprNode);
  end;

  TMYLDBExprNodeBlob = class(TMYLDBExprNode)
   private
    procedure MimeToBin;
   public
    function GetDataValue: TMYLDBVariant;  override;
    function GetDataType: TMYLDBAdvancedFieldType; override;
    function GetDataSize: Integer; override;
  end;


  TMYLDBExprNodeStringFunction = class(TMYLDBExprNode)
   protected
    function InitStringValue: Boolean;
   protected
    procedure Concat;
    procedure Upper;
    procedure Lower;
    procedure Trim;
    procedure LTrim;
    procedure RTrim;
    procedure Length;
    procedure Pos;
    procedure Substring;
   public
    // Return Data Value
    function GetDataValue: TMYLDBVariant;  override;
    // return Type of Data
    function GetDataType: TMYLDBAdvancedFieldType; override;
    // return Size of Data (for strings and arrays)
    function GetDataSize: Integer; override;
  end;


  TMYLDBExprNodeSystem = class(TMYLDBExprNode)
   private
    FTableName:   String;
    FColumnName:  String;
    FInMemory:    Boolean;
    FTable:       TDataSet;
    FFieldType:   TMYLDBAdvancedFieldType;
    FRowNumValue: integer;
   private
    procedure LastAutoInc;
    procedure RowNum;
   public
    // creates
    constructor Create(Operator: TMYLDBDataOperator; SessionName, DatabaseName, TableName, ColumnName: String; InMemory: Boolean); overload;
    // Destructor
    destructor Destroy; override;
    // Return Data Value
    function GetDataValue: TMYLDBVariant;  override;
    // return Type of Data
    function GetDataType: TMYLDBAdvancedFieldType; override;
    // return Size of Data (for strings and arrays)
    function GetDataSize: Integer; override;
  end;


  TMYLDBExprNodeDateFunction = class(TMYLDBExprNode)
   private
    DateFormater: TDateFormater;
    ExtractDateTimeField: TMYLDBDateTimeExtractField;

    // ToDate
    procedure ToDate;
    // ToString
    procedure ToString;
    // Extract
    procedure Extract;
   public
    // Constructor
    constructor Create(Op: TMYLDBDataOperator;
                       Node: TMYLDBExprNode;
                       FormatStr: String); overload;
    constructor Create(Op: TMYLDBDataOperator;
                       ExtractField: TMYLDBDateTimeExtractField;
                       ExtractSource: TMYLDBExprNode); overload;

    // Destructor
    destructor Destroy; override;
    // Return Data Value
    function GetDataValue: TMYLDBVariant;  override;
    // return Type of Data
    function GetDataType: TMYLDBAdvancedFieldType; override;
    // return Size of Data (for strings and arrays)
    function GetDataSize: Integer; override;
  end;


  TCheckResultsMethod = function: Boolean of object;
  TMYLDBExprNodeSubquery = class(TMYLDBExprNode)
   private
    FMustHaveOneField: Boolean;
    FMustHaveOneRow: Boolean;
    FValue: TMYLDBVariant;
    FFieldValues: array of TMYLDBVariant;
    LDataset: TDataset;
    LLexer: TMYLDBLexer;
    LAO: TMYLDBAO;
    LCursor: TMYLDBCursor;
    LCursorRecordBuffer: TMYLDBRecordBuffer;
    FSubquery: TObject;// TMYLDBSQLUnion
    FCommandNo: Integer;
    FTokenNo: Integer;
    LValueToCheck: TMYLDBVariant;
    FPriorValueToCheck: TMYLDBVariant;
    FPriorResult: Boolean;
    FPriorResultInitalized: Boolean;
    FCompareOperator: TMYLDBDataOperator;
    FCompareQuantifier: TMYLDBQuantifier;
    FCorrelated: Boolean;

    function CheckGetDataValue: Boolean;
    function CheckGetFieldValues: Boolean;
    function CheckExists: Boolean;
    function CheckIsValueIn: Boolean;
    function CheckQuantifiedCompare: Boolean;
    function RunQueryAndCheckResults(CheckMethod: TCheckResultsMethod): Boolean;
   public
    // Constructor
    constructor Create(MustHaveOneField: Boolean; MustHaveOneRow: Boolean;
                       Dataset: TDataset; Lexer: TMYLDBLexer);
    destructor Destroy; override;
    // process assign cursor
    procedure AssignCursor(Cursor: TMYLDBCursor; ParentQueryAO: TMYLDBAO; ParentCursor: TMYLDBCursor); override;
    // process assign New Cursor Buffer
    procedure AssignCursorBuffer(Buffer: TMYLDBRecordBuffer; ApplyToParentQueryFields: Boolean); override;
    // process assign AO
    procedure AssignAO(AO, ParentQueryAO: TMYLDBAO; ParentCursor: TMYLDBCursor); override;
    function CanBeAssigned(AO, ParentQueryAO: TMYLDBAO; ParentCursor: TMYLDBCursor; ForHavingClause: Boolean = False): Boolean; override;
    // Return Data Value
    function GetDataValue: TMYLDBVariant;  override;
    // calc subquery field values again
    procedure ResetSubqueryFieldValues; override;
    // Return subquery field value
    function GetSubqueryFieldValue(FieldNo: Integer): TMYLDBVariant; override;
    // return Type of Data
    function GetDataType: TMYLDBAdvancedFieldType; override;
    // return Data Size
    function GetDataSize: Integer;  override;
    // EXISTS subquery
    function Exists: Boolean;
    // IN subquery
    function IsValueIn(Value: TMYLDBVariant): Boolean;
    // > ALL subquery
    function QuantifiedCompare(Operator: TMYLDBDataOperator;
                       Quantifier: TMYLDBQuantifier; Value: TMYLDBVariant): Boolean;
  end;




// get operator name
function GetOperatorName(op: TMYLDBDataOperator): String;

// Return FieldType
function GetFieldType(const TypeName: string): TMYLDBAdvancedFieldType;

procedure FillFieldNames(List: TStringList; const Names: String);

// "<" => ">", "=" => "="
function ReverseComparisonOperator(CompOp: TMYLDBDataOperator): TMYLDBDataOperator;

// "<" => ">=", "=" => "<>"
function InvertComparisonOperator(CompOp: TMYLDBDataOperator): TMYLDBDataOperator;

function IsNonConstantExpression(Value: TMYLDBVariant): Boolean;

implementation

uses MYLDBMain, MYLDBCompression, MYLDBSQLProcessor, MYLDBLocalEngine, MYLDBDecUtil,
     Math, MYLDBStrUtils, MYLDBDecimalRounding;

//------------------------------------------------------------------------------
// get operator name
//------------------------------------------------------------------------------
function GetOperatorName(op: TMYLDBDataOperator): String;
begin
  case op of
    doNOT:          Result := 'NOT';
    doAND:          Result := 'AND';
    doOR:           Result := 'OR';
    doEQ:           Result := '=';
    doNE:           Result := '<>';
    doLT:           Result := '<';
    doGT:           Result := '>';
    doLE:           Result := '<=';
    doGE:           Result := '>=';
    doLIKE:         Result := 'LIKE';
    doNOTLIKE:      Result := 'NOT LIKE';
    doISNULL:       Result := 'IS NULL';
    doISNOTNULL:    Result := 'IS NOT NULL';
    doADD:          Result := '+';
    doSUB:          Result := '-';
    doMUL:          Result := '*';
    doDIV:          Result := '/';
    doCONCAT:       Result := '||';
    doUPPER:        Result := 'UPPER';
    doLOWER:        Result := 'LOWER';
    doTRIM:         Result := 'TRIM';
    doLTRIM:        Result := 'LTRIM';
    doRTRIM:        Result := 'RTRIM';
    doSUM:          Result := 'SUM';
    doAVG:          Result := 'AVG';
    doMIN:          Result := 'MIN';

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频一区视频二区在线观看| 成人av第一页| 欧美一区二区人人喊爽| 久草这里只有精品视频| 欧美精品一二三区| 国产中文字幕精品| 国产精品久久777777| 一本到高清视频免费精品| 午夜视频一区二区三区| 日韩欧美区一区二| 丰满亚洲少妇av| 亚洲精选视频免费看| 欧美日韩高清不卡| 狠狠色丁香婷婷综合久久片| 国产日韩欧美综合一区| 色欧美乱欧美15图片| 男人的j进女人的j一区| 中文字幕+乱码+中文字幕一区| 99久久国产综合精品色伊| 午夜精品福利在线| 久久久国产精品麻豆| 欧美影视一区二区三区| 免费的成人av| 亚洲免费观看高清完整版在线观看| 色婷婷av一区二区三区软件| 蜜桃视频一区二区三区| 国产精品乱人伦中文| 欧美日韩大陆一区二区| 国产精品一区二区在线观看不卡| 亚洲激情图片小说视频| 精品精品欲导航| 一道本成人在线| 国产一区二区在线看| 亚洲激情图片qvod| 国产调教视频一区| 欧美精品少妇一区二区三区| 丰满少妇在线播放bd日韩电影| 三级欧美在线一区| 亚洲欧美影音先锋| 欧美精品一区二区三区四区| 欧美在线观看18| 国产成人免费网站| 日韩成人免费电影| 亚洲精品va在线观看| 久久精品日产第一区二区三区高清版| 色妹子一区二区| 国产一区二区三区在线看麻豆| 亚洲一级二级三级在线免费观看| www日韩大片| 制服丝袜亚洲网站| 日本福利一区二区| 成人听书哪个软件好| 精品一区二区三区在线视频| 亚洲丶国产丶欧美一区二区三区| 中文字幕亚洲一区二区av在线 | 免费成人你懂的| 亚洲精品国产无天堂网2021 | 韩国精品一区二区| 首页亚洲欧美制服丝腿| 亚洲精品一卡二卡| 国产精品视频一二三| 久久久久久久久久久久久夜| 日韩美女在线视频| 5月丁香婷婷综合| 欧美午夜寂寞影院| 欧美性视频一区二区三区| 91年精品国产| 色呦呦一区二区三区| 91视频在线观看免费| av爱爱亚洲一区| jiyouzz国产精品久久| 成人av手机在线观看| 成人精品亚洲人成在线| 成人国产精品免费观看动漫| 高清不卡在线观看av| 国产盗摄精品一区二区三区在线| 国产一区二区精品久久91| 激情综合色综合久久| 久久99精品国产麻豆不卡| 国产综合久久久久影院| 国产一区二区三区视频在线播放| 国产一区二区精品久久99| 国产成人综合在线播放| 成人免费视频视频在线观看免费| 国产不卡在线播放| 色综合天天综合网国产成人综合天 | 精品久久久网站| 欧美成人精品福利| 2023国产一二三区日本精品2022| 精品国产91久久久久久久妲己 | 日韩中文字幕区一区有砖一区| 亚洲午夜精品17c| 日韩国产欧美一区二区三区| 久久成人免费电影| 国产精品一级二级三级| av中文字幕在线不卡| 色悠悠亚洲一区二区| 欧美日韩国产bt| 26uuu亚洲综合色| 欧美激情综合在线| 亚洲激情成人在线| 日韩国产欧美三级| 国产精品影视在线| 91丨九色丨尤物| 欧美一区二区国产| 日本一区二区三区dvd视频在线| 国产精品久久久久久亚洲伦| 亚洲一区二区三区精品在线| 日本sm残虐另类| 成人综合日日夜夜| 欧美午夜影院一区| 久久一日本道色综合| 亚洲精品日韩一| 国内外成人在线| 色猫猫国产区一区二在线视频| 欧美一级一区二区| 国产精品乱码人人做人人爱| 一区二区三区在线免费视频| 激情综合色播五月| 日本久久一区二区三区| 日韩欧美在线综合网| 国产精品美日韩| 麻豆精品在线看| 91在线观看免费视频| 欧美大片免费久久精品三p| 日韩理论在线观看| 激情深爱一区二区| 欧美亚洲综合在线| 国产精品视频一区二区三区不卡| 首页亚洲欧美制服丝腿| 91视频免费播放| 久久久www免费人成精品| 香蕉av福利精品导航| 成人教育av在线| 精品裸体舞一区二区三区| 一级女性全黄久久生活片免费| 国产馆精品极品| 精品国产凹凸成av人导航| 日韩综合小视频| 欧洲一区二区三区免费视频| 国产欧美一区在线| 精品一区二区三区久久久| 欧美精品在线观看播放| 一区二区三区在线看| 国产·精品毛片| 久久久影视传媒| 老司机一区二区| 91精品福利在线一区二区三区 | 久久精品水蜜桃av综合天堂| 日本成人在线视频网站| 欧美日韩五月天| 一区二区三区四区国产精品| 不卡电影一区二区三区| 国产日韩av一区二区| 国产主播一区二区| 精品国产亚洲在线| 久久国产三级精品| 欧美一区二区国产| 美国三级日本三级久久99| 欧美日韩1区2区| 伊人一区二区三区| 色婷婷综合五月| 一区二区在线看| 一本一道波多野结衣一区二区| 中文字幕亚洲综合久久菠萝蜜| 成人av资源网站| 18成人在线观看| 色综合久久中文综合久久97| ...av二区三区久久精品| 成人av综合在线| 亚洲女女做受ⅹxx高潮| 色综合久久88色综合天天| 亚洲影视资源网| 在线播放91灌醉迷j高跟美女| 无码av免费一区二区三区试看| 欧美日韩一区三区四区| 日韩av不卡在线观看| 日韩欧美电影一二三| 国产在线一区观看| 国产精品午夜在线| 91同城在线观看| 亚洲国产精品久久不卡毛片| 欧美精品777| 国产一区91精品张津瑜| 中文字幕精品综合| 91福利精品视频| 日韩国产高清在线| xnxx国产精品| 91一区二区三区在线播放| 午夜精品aaa| 精品国产人成亚洲区| 粉嫩一区二区三区性色av| 伊人色综合久久天天人手人婷| 欧美日韩国产一级二级| 美女尤物国产一区| 国产精品久久毛片| 欧美亚洲自拍偷拍| 国内成人免费视频| 一区二区三区蜜桃| 精品国产伦一区二区三区观看方式|