Page tree
Skip to end of metadata
Go to start of metadata

1. 内容概述

原生SQL查询是指某类型数据源能够接受的文本形式的查询语句,例如使用Oracle数据源时应使用符合Oracle查询语法的查询语句。

如果您的数据源是Excel, Csv, Json, Xml, MongoDB, OData,由于这些数据源原生的查询语法标准和标准SQL语法相差甚远,Wyn为您提供了WynSql语言进行查询。

2. WynSql

WynSql是为查询Excel, Csv, Json, Xml, MongoDB, OData数据源提供的SQL查询语言。

WynSql基本模拟了SQLite语法标准但有以下限制:

  1. 只能使用SELECT语句。
  2. GroupBy子句中不能使用表达式,只能使用列引用。
  3. OrderBy子句中不能使用表达式,只能使用列引用。
  4. 不能使用任何SQLite的内置函数,Wyn提供了自己的函数库。

3. WynSql函数库

注意

如果一个函数需要一个枚举值作为参数,请直接使用枚举值的字面值,不需要使用单/双引号。

例如StrLike(column1, 'start%', Text)

Abs数学Abs(number)获取指定数值(number)的绝对值.
Acos数学Acos(number)获取余弦值为指定数值(number)的角度(以弧度为单位)。
Asin数学Asin(number)获取正弦值为指定数值(number)的角度(以弧度为单位)。
Atan数学Atan(number)获取切线为指定数值(number)的角度(以弧度为单位)。
Atn2数学Atn2(y, x)获取其切线为指定数值(x和y)的商的角度(以弧度为单位)。
Ceiling数学Ceiling(number)获取大于或等于指定数值(number)的最小整数。
Cos数学Cos(number)获取指定角度的余弦值。
Cot数学Cot(number)获取指定角度的三角余切值的角度(以弧度为单位)。
Degrees数学Degrees(radians)获取以弧度指定的角度(radians)的角度(以度为单位)。
Exp数学Exp(number)获取e的指定数值(number)的幂次方。
Floor数学Floor(number)获取小于或等于指定十进制数(number)的最大整数。
Log数学Log(number)获取(以e或指定数值newBase)为基数,指定数值(number)的自然对数。
Log10数学Log10(number)获取以10为基数,指定数值(number)的自然对数。
PI数学PI()获取表示圆的圆周与其直径的比率,由常数π指定。
Power数学Power(x, y)获取指定数数值(x)的指定数值(y)的幂次方。
Radians数学Radians(degrees)获取以度为指定数值表达式(degress)的数值(以弧度为单位)。
Rand数学

Rand()

Rand(maxValue)

获取指定范围内的随机整数, 或者获取一个大于等于0.0且小于1.0的随机浮点数。
Round数学

Round(number)

Round(number, digits)

获取将舍入为最接近的整数或指定的小数位数. 可用的MidpointRounding枚举值: ToEven, AwayFromZero。
Sign数学Sign(number)获取一个数值符号(number)的整数。
-1:值小于零。
 0:值等于零。
 1:值大于零。
Sin数学Sin(number)获取指定角度(number)的正弦值。
Sqrt数学Sqrt(number)获取指定数值(number)的平方根。
Square数学Square(number)获取指定数值(number)的平方。
Tan数学Tan(number)获取指定角度(number)的正切值。
DateAdd日期时间DateAdd(EDatePart ddatepart, number, dateTime)获取将指定数值(number)作为有符号整数值添加到输入日期值(dateTime)的指定日期部分所产生的日期时间值.。
可用的EDatePart枚举值:
   Year, yyyy, yy,
   Quarter, qq, q,
   Month, mm, m,
   DayOfYear, dy, y
   Day, dd, d,
   WeekDay, dw,
   Week, ww, wk,
   Hour, hh,
   Minute, mi, n,
   Second, ss, s,
   MilliSecond, ms
DateDiff日期时间DateDiff(EDatePart datepart, dateTime1, dateTime2)获取指定日期(dateTime1)和(dateTime2)之间指定时间间隔(datepart)的数值(作为有符号整数值)、
可用的EDatePart枚举值:
   Year, yyyy, yy,
   Quarter, qq, q,
   Month, mm, m,
   DayOfYear, dy, y
   Day, dd, d,
   WeekDay, dw,
   Week, ww, wk,
   Hour, hh,
   Minute, mi, n,
   Second, ss, s,
   MilliSecond, ms
DateFromParts日期时间DateFromParts(year, month, day)获取指定年(year),月(month)和日(day)的日期值。
DatePart日期时间DatePart(EDatePart datepart, dateTime)获取指定日期(dateTime)的datepart的整数. 可用的EDatePart枚举值:
   Year, yyyy, yy,
   Quarter, qq, q,
   Month, mm, m,
   DayOfYear, dy, y
   Day, dd, d,
   WeekDay, dw,
   Week, ww, wk,
   Hour, hh,
   Minute, mi, n,
   Second, ss, s,
   MilliSecond, ms
EOMonth日期时间EOMonth(dateTime, [int addMonth = 0])获取包含具有可选偏移量的指定日期(dateTime)的月份的最后一天。
GetDate日期时间GetDate()获取当前系统时间戳,作为没有时区偏移的日期时间值。
GetUtcDate日期时间GetUTCDate()获取当前系统时间戳,作为UTC日期时间值而没有时区偏移量。
Concat文本Concat([string1,string2...])获取给定字符串(string1,string2...)连接在一起生成的字符串。
Format文本Format(value, format)获取用指定格式(format)将指定值(value)格式化生成的字符串。
IndexOf文本IndexOf(value, search)获取从开头或指定位置(startIndex)开始,获取给定字符串(value)中子字符串(search)的位置。
IsNull文本IsNull(value)检查给定值(value)是否为null或DBNull;或者,如果指定值(value1)为null或DBNull,则获取备用值(value2)。
Left文本Left(value, length)获得从给定的字符串(value)中获取长度为(lengh)的子字符串(从左开始)。
Len文本Len(value)获取给定字符串(value)的长度。
Lower文本Lower(value)获取将给定字符串(value)中的所有字符转换为小写生成的字符串。
LTrim文本LTrim(value)获取从给定字符串(value)中删除所有前导空格生成的字符串。
Replace文本Replace(value, pattern, replacement)获取用字符(replacement)替换给定字符串(value)中的字符序列(pattern)生成的字符串。
Replicate文本Replicate(value, times)获取重复给定的字符串(value)指定的次数(times)生成的字符串。
Reverse文本REverse(value)获取反转给定字符串(value)生成的字符串。
Right文本Right(value, length)获得从给定的字符串(value)中获取长度为(lengh)的子字符串(从右开始)。
RTrim文本RTrim(value)获取从给定字符串(value)中删除所有尾随空格生成的字符串。
SubString文本SubString(value, startIndex, length)获取给定字符串(value)中从指定数值(startIndex)开始,提取长度为指定数值(length)子字符串。
ToString文本ToString(value)获取给定对象(value)的字符串。
Trim文本Trim(value)获取从给定字符串(value)中删除所有前导和尾随空格生成的字符串。
Upper文本Upper(value)获取将给定字符串(value)中的所有字符转换为大写字母生成的字符串。
Array混合Array([object1,object2...])获取给定对象(object1,object2...)创建的数组。
Category混合Category(value, RangeOption rangeOption, OutsideRangeOption outsideRangeOption, min, max, step)

获取表示指定值所在范围的文本。

可用的RangeOption枚举值:IncludeLeft_ExcludeRight, ExcludeLeft_IncludeRight.
可用的OutsideRangeOption枚举值:None, LessThanMin, GreaterThanMax, All

CustomCategory混合CustomCategory(value, RangeOption rangeOption, [categoryDefinition1, categoryDefinition2...])获取一个文本,表示指定值所在的范围。
可用的RangeOption枚举值:IncludeLeft_ExcludeRight, ExcludeLeft_IncludeRight。
FiscalYear混合FiscalYear(dateTime, startMonthOfFiscalYear)获取指定日期(dateTime)的财政年度。
Asc文本Asc(string)获取与字符对应的字符代码的Integer值。
AscW文本AscW(string)获取与Unicode字符对应的字符代码的Integer值。
Chr文本Chr(CharCode)获取与指定字符代码关联的字符。
ChrW文本ChrW(CharCode)获取与指定字符代码关联的Unicode字符。
Filter文本Filter([source1,source2...], Match, [bool Include = True], [CompareMethod Compare = Binary])获取基于零的数组,该数组包含基于指定过滤条件的string数组的子集。
可用的CompareMethod枚举值: Binary, Text。
FormatCurrency文本FormatCurrency(expression, [int NumDigitsAfterDecimal = -1], [TriState IncludeLeadingDigit = UseDefault], [TriState UseParensForNegativeNumbers = UseDefault], [TriState GroupDigits = UseDefault])使用系统控制面板中定义的货币符号,获取格式为货币值的表达式。
可用的TriState枚举值:True, False, UseDefault。
FormatDateTime文本FormatDateTime(expression, [DateFormat NamedFormat = GeneralDate])获取表示日期/时间值的字符串表达式。
可用的DateFormat枚举值:GeneralDate, LongDate, ShortDate, LongTime, ShortTime。
FormatNumber文本FormatNumber(expression, [int NumDigitsAfterDecimal = -1], [TriState IncludeLeadingDigit = UseDefault], [TriState UseParensForNegativeNumbers = UseDefault], [TriState GroupDigits = UseDefault])获取格式为数值的表达式。
可用的TriState枚举值:True, False, UseDefault。
FormatPercent文本FormatPercent(expression, numDigitsAfterDecimal = -1, TriState includeLeadingDigit = UseDefault, TriState useParensForNegativeNumbers = UseDefault, TriState groupDigits = TriState.UseDefault)获取格式为百分比(即乘以100)的表达式,其尾部为%字符。
可用的TriState枚举值:True, False, UseDefault。
GetChar文本GetChar(str, Index)获取表示所提供字符串(str)中指定索引(Index)的字符。
InStr文本InStr(string1, string2, [CompareMethod Compare = Binary])获取给定字符串string2)在字符串(string1)中第一次出现的起始位置。
可用的CompareMethod枚举值: Binary, Text。
InStrRev文本InStrRev(stringCheck, stringMatch, [int start = -1], [CompareMethod compare = Binary])获取第一次出现的字符串(stringCheck)在字符串(stringMatch)中的位置(从字符串的右侧开始)。
可用的CompareMethod枚举值:Binary, Text.
Join文本Join([source1,source2...], [string delimiter = " "])获取通过连接数组中包含的多个子字符串(source1,source2...)创建的字符串。
LCase文本LCase(value)获取将给定字符串(value)转换为小写的字符串或字符。
LSet文本LSet(str, length)获取包含调整为指定长度(length)的字符串(str)左对齐的字符串。
Mid文本Mid(str, start)获取包含指定字符串(str)中从指定数值(start)开始,获取指定数量(length)字符的字符串。
RSet文本RSet(str, length)获取包含调整为指定长度(length)的字符串(str)的右对齐的字符串。
Space文本Space(number)获取由指定数量(number)的空格组成的字符串。
Split文本Split(str, [string delimiter = " "], [int limit = -1], [CompareMethod compare = Binary])获取包含指定数量子字符串的从零开始的一维数组。
StrComp文本StrComp(string1, string2, [CompareMethod compare = Binary])获取根据字符串比较的结果,返回-1,0或1。
StrDup文本StrDup(number, character)获取由指定字符(character)重复指定次数(number)组成的字符串或对象。
StrReverse文本StrReverse(str)获得将给定字符串(str)的字符顺序颠倒过来生成的字符串。
UCase文本UCase(str)获取将指定字符串(str)转换为大写的字符串或字符。
StrLike文本StrLike(str, pattern, CompareMethod compareOption)比较参数(str)和(pattern)并返回与Like运算符相同的结果。
可用的CompareMethod枚举值: Binary, Text。
StrLikeText文本StrLikeText(str, Pattern)使用文本比较参数(str)和(pattern)并返回与Like运算符相同的结果。
StrLikeBinary文本StrLikeBinary(str, Pattern)使用二进制比较参数(str)和(pattern)并返回与Like运算符相同的结果。
DateSerial日期时间DateSerial(year, month, day)获取表示指定年(year)、月(month)和日(day)的日期值。
DateString日期时间DateString()根据您的系统返回表示当前日期的字符串。
DateValue日期时间DateValue(stringDate)获取包含字符串表示的日期信息的Date值,时间信息设置为凌晨(00:00:00)。
Day日期时间Day(dateValue)获取1到31之间的Integer值,表示该月的某天。
Hour日期时间Hour(timeValue)获取0到23之间的整数值,表示一天中的小时。
Minute日期时间Minute(timeValue)获取0到59之间的整数值,表示小时的分钟。
Month日期时间Month(dateValue)获取1到12之间的整数值,表示一年中的月份。
MonthName日期时间MonthName(month, [bool abbreviate = false])获取包含指定月份month名称的字符串。
Now日期时间Now()根据您的系统返回包含当前日期和时间的日期值。
Second日期时间Second(timeValue)获取0到59之间的整数值,表示分钟的秒。
TimeOfDay日期时间TimeOfDay()根据您的系统返回或设置包含当前时间的日期值。
Timer日期时间Timer()获取自凌晨起经过的秒数。
TimeSerial日期时间TimeSerial(hour, minute, second)获取表示指定小时,分钟和秒的Date值,其中日期信息设置为相对于1年的1月1日。
TimeString日期时间TimeString()根据您的系统返回或设置表示当前时间的字符串。
TimeValue日期时间TimeValue(stringTime)获取包含字符串表示的时间信息的Date值,日期信息设置为1年1月1日。
Today日期时间Today()根据您的系统返回或设置包含当前日期的日期值。
Weekday日期时间Weekday(dateValue, [FirstDayOfWeek dayOfWeek = Sunday])获取表示星期几的数值。
可用的FirstDayOfWeek枚举值: System, Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday.
WeekdayName日期时间WeekdayName(weekday, [bool abbreviate = false], [FirstDayOfWeek firstDayOfWeekValue = System])获取包含指定工作日名称的字符串。
可用的FirstDayOfWeek枚举值:System, Sunday, Monday,Tuesday, Wednesday, Thursday, Friday, Saturday.
Year日期时间Year(dateValue)获取表示年份的1到9999之间的数值。
CBool类型转换CBool(value)将给定值(value)转换为'bool'类型。
CByte类型转换CByte(value)将给定值(value)转换为'byte'类型。
CChar类型转换CChar(value)将给定值(value)转换为'char'类型。
CDate类型转换CDate(value)将给定值(value)转换为'DateTime'类型。
CDbl类型转换CDbl(value)将给定值(value)转换为'double'类型。
CDec类型转换CDec(value)将给定值(value)转换为'decimal'类型。
CInt类型转换CInt(value)将给定值(value)转换为'int'类型。
CLng类型转换CLng(value)将给定值(value)转换为'long'类型。
CShort类型转换CShort(value)将给定值(value)转换为'short'类型。
CSng类型转换CSng(value)将给定值(value)转换为'float'类型。
CStr类型转换CStr(value)将给定值(value)转换为'string'类型。
Fix类型转换Fix(number)获取指定数值(number)的整数部分。
Fix函数和Int函数的区别:Fix函数转换-8.4到-8,Int函数转换-8.4到-9。
Hex类型转换Hex(number)获取指定数值(number)的十六进制值的字符串。
Int类型转换Int(number)获取指定数值(number)的整数部分。
Int和Fix之间的差异:Int将-8.4转换为-9,Fix将-8.4转换为-8。
Oct类型转换Oct(number)获取指定数值(number)的八进制值的字符串。
Str类型转换Str(number)获取指定数字(number)的字符串表示形式。
始终为数字符号保留前导空格。
Val类型转换Val(expression)获取字符串中包含的数字作为适当类型的数值。
Rnd数学Rnd()获取Single类型的随机数。
Choose流程Choose(Index, [choice1,choice2...])根据index的值从选择列表中返回一个值。
如果index为1,则选择返回列表中的第一个选项;如果index为2,则返回第二个选择,依此类推。
语法: Choose(index, choice-1 [, choice-2, ... [, choice-n ]] )
IIF流程IIF(expression, TruePart, FalsePart)获取两个对象中的一个,如果表达式的计算结果为真,则选择返回(TruePart);否则返回(FalsePart)。
Switch流程Switch([varExpr1,varExpr2...])计算表达式列表并返回与列表中第一个表达式相关联的值或表达式,该值为True。
语法: Switch(expr-1, value-1 [ ,expr-2,value-2… [ ,expr-n,value-n ]] )
Partition流程Partition(Number, Start, Stop, Interval)获取指示在计算的一系列范围内出现数字的位置。
您可以创建一个选择查询,显示有多少订单落在各种范围内。例如,订单值从1到1000,1001到2000,依此类推。
IsArray检测IsArray(exp)获取一个布尔值,指示变量(exp)是否为数组。
IsDate检测IsDate(exp)获取一个布尔值,如果表达式是日期或可识别为有效日期或时间,则返回True;反之,则返回False。
IsNothing检测IsNothing(exp)获取一个布尔值,指示表达式是否没有为其分配对象。
IsNumeric检测IsNumeric(exp)获取一个布尔值,指示是否可以将表达式计算为数字。
IsError检测IsError(exp)获取一个布尔值,指示是否可以将表达式计算为错误(exception)。
IsDBNull检测IsDBNull(exp)获取一个布尔值,指示对象是空值还是DBNull。
DDB财务DDB(Cost, Salvage, Life, Period, [double Factor = 2.0])获取使用双倍余额递减法或您指定的其他方法指定特定时间段内资产的折旧。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/ddb-function。
FV财务FV(Rate, NPer, Pmt, [double PV = 0.0], [DueDate Due = EndOfPeriod])获取指定基于定期,固定付款和固定利率的年金的未来价值。
可用的DueDate枚举值: EndOfPeriod, BegOfPeriod。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/fv-function
IPMT财务IPmt(Rate, Per, NPer, PV, [double FV = 0.0], [DueDate Due = EndOfPeriod])获取指定基于定期固定付款和固定利率的特定年金期间的利息支付。
可用的DueDate枚举值: EndOfPeriod, BegOfPeriod。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/ipmt-function
NPER财务NPer(Rate, Pmt, PV, [double FV = 0.0], [DueDate Due = EndOfPeriod])获取指定基于定期,固定付款和固定利率的年金的期数。
可用的DueDate枚举值::EndOfPeriod, BegOfPeriod。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/nper-function。
PMT财务Pmt(Rate, NPer, PV, [double FV = 0.0], [DueDate Due = EndOfPeriod)]获取指定基于定期固定付款和固定利率的年金付款。
可用的DueDate枚举值: EndOfPeriod, BegOfPeriod。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/pmt-function
PPMT财务PPmt(Rate, Per, NPer, PV, [double FV = 0.0], [DueDate Due = EndOfPeriod])获取指定基于定期固定付款和固定利率的特定年金期间的本金。
可用的DueDate枚举值: EndOfPeriod, BegOfPeriod。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/ppmt-function
PV财务PV(Rate, NPer, Pmt, [double FV = 0.0], [DueDate Due = EndOfPeriod])获取指定基于将来要支付的定期固定付款和固定利率的年金现值。
可用的DueDate枚举值:EndOfPeriod, BegOfPeriod。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/pv-function
RATE财务Rate(NPer, Pmt, PV, [double FV = 0.0], [DueDate Due = EndOfPeriod], [double Guess = 0.1])获取指定年金的每个期间的利率。
可用的DueDate枚举值:EndOfPeriod, BegOfPeriod。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/rate-function
SLN财务SLN(Cost, Salvage, Life)获取指定单个期间资产的直线折旧。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/sln-function
SYD财务SYD(Cost, Salvage, Life, Period)获取指定指定期间内资产的年数总和折旧。
查看详细信息 https://msdn.microsoft.com/en-us/vba/language-reference-vba/articles/syd-function
  • No labels