当前位置:首页 » 编程语言 » if函数sql参数设置
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

if函数sql参数设置

发布时间: 2023-03-08 04:29:22

‘壹’ 求助,FineReport使用sql数据集参数

大致的步骤就是先取出所有数据,再进行过滤,取数,过滤。

简单应用:SELECT * FROM 销量 where 地区 = '${地区}'

带公式的应用:SELECT * FROM 订单 where 1=1 ${if(len(area) == 0,"","and 货主地区 = '" + area + "'")} ${if(len(province) == 0,"","and 货主省份 = '" + province + "'")}

具体步骤如下:

1、打开报表

2、定义数据源参数

修改数据集sql语句为:SELECT * FROM 销量 where 地区 = '${地区}',点击下方的刷新按钮显示出参数,默认值设置为“华北”

3、过滤数据

若参数地区的值为华北,那么${地区}这个参数宏最终的值就是华北,数据集sql即为:SELECT * FROM 销量 where 地区 = '华北'

4、制作参数界面

5、保存报表并发布

‘贰’ SQL参数如何设置

密码应该是系统默认的哪个样的,你试下看看输入 sa 或admin 或 administrator这些等等的。。

‘叁’ 在oracle sql语句里有没有if...else...的用法,请各位大侠给个例子看看,灰常感谢!!

oracle 中if ..else 可以再pl/sql 中使用,
如果是要在SQL语句中达到这种效果可以用case when ... then ...else ..end;
mysql数据库中CASE WHEN语句。

case when语句,用于计算条件列表并返回多个可能结果表达式之一。

CASE 具有两种格式:

简单 CASE 函数将某个表达式与一组简单表达式进行比较以确定结果。

CASE 搜索函数计算一组布尔表达式以确定结果。
两种格式都支持可选的 ELSE 参数。

语法
简单 CASE 函数:

复制代码 代码如下:

CASE input_expression
WHEN when_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END

CASE 搜索函数:

复制代码 代码如下:

CASE
WHEN Boolean_expression THEN result_expression
[ ...n ]
[
ELSE else_result_expression
END

参数
input_expression

是使用简单 CASE 格式时所计算的表达式。Input_expression 是任何有效的 Microsoft? SQL Server? 表达式。

WHEN when_expression

使用简单 CASE 格式时 input_expression 所比较的简单表达式。When_expression 是任意有效的 SQL
Server 表达式。Input_expression 和每个 when_expression 的数据类型必须相同,或者是隐性转换。

占位符,表明可以使用多个 WHEN when_expression THEN result_expression 子句或 WHEN Boolean_expression THEN result_expression 子句。

THEN result_expression

当 input_expression = when_expression 取值为 TRUE,或者 Boolean_expression 取值为 TRUE 时返回的表达式。
result expression 是任意有效的 SQL Server 表达式。

ELSE else_result_expression

当比较运算取值不为 TRUE 时返回的表达式。如果省略此参数并且比较运算取值不为 TRUE,CASE 将返回 NULL
值。Else_result_expression 是任意有效的 SQL Server 表达式。Else_result_expression
和所有 result_expression 的数据类型必须相同,或者必须是隐性转换。

WHEN Boolean_expression

使用 CASE 搜索格式时所计算的布尔表达式。Boolean_expression 是任意有效的布尔表达式。

结果类型

从 result_expressions 和可选 else_result_expression 的类型集合中返回最高的优先规则类型。有关更多信息,请参见数据类型的优先顺序。

结果值

简单 CASE 函数:
计算 input_expression,然后按指定顺序对每个 WHEN 子句的 input_expression = when_expression 进行计算。

返回第一个取值为 TRUE 的 (input_expression = when_expression) 的 result_expression。

如果没有取值为 TRUE 的 input_expression = when_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。
CASE 搜索函数:
按指定顺序为每个 WHEN 子句的 Boolean_expression 求值。

返回第一个取值为 TRUE 的 Boolean_expression 的 result_expression。

如果没有取值为 TRUE 的 Boolean_expression,则当指定 ELSE 子句时 SQL Server 将返回 else_result_expression;若没有指定 ELSE 子句,则返回 NULL 值。

下面分享一些mysql case when语句的例子。

A. 使用带有简单 CASE 函数的 SELECT 语句
在 SELECT 语句中,简单 CASE 函数仅检查是否相等,而不进行其它比较。

例子,使用 CASE 函数更改图书分类显示。

复制代码 代码如下:

USE pubs
GO
SELECT Category =
CASE type
WHEN 'popular_comp' THEN 'Popular Computing'
WHEN 'mod_cook' THEN 'Modern Cooking'
WHEN 'business' THEN 'Business'
WHEN 'psychology' THEN 'Psychology'
WHEN 'trad_cook' THEN 'Traditional Cooking'
ELSE 'Not yet categorized'
END,
CAST(title AS varchar(25)) AS 'Shortened Title',
price AS Price
FROM titles
WHERE price IS NOT NULL
ORDER BY type, price
COMPUTE AVG(price) BY type
GO

注释,后来我试了一下不让用category=。

我使用的代码为:

复制代码 代码如下:

SELECT
case gender
WHEN 1 THEN 'NAN'
WHEN 0 THEN 'NV'
end as gender
FROM
t_swidy_day_nutrient

结果集:

Category Shortened Title Price
------------------- ------------------------- --------------------------
Business You Can Combat Computer S 2.99
Business Cooking with Computers: S 11.95
Business The Busy Executive's Data 19.99
Business Straight Talk About Compu 19.99

avg
==========================
13.73

Category Shortened Title Price
------------------- ------------------------- --------------------------
Modern Cooking The Gourmet Microwave 2.99
Modern Cooking Silicon Valley Gastronomi 19.99

avg
==========================
11.49

Category Shortened Title Price
------------------- ------------------------- --------------------------
Popular Computing Secrets of Silicon Valley 20.00
Popular Computing But Is It User Friendly? 22.95

avg
==========================
21.48

Category Shortened Title Price
------------------- ------------------------- --------------------------
Psychology Life Without Fear 7.00
Psychology Emotional Security: A New 7.99
Psychology Is Anger the Enemy? 10.95
Psychology Prolonged Data Deprivatio 19.99
Psychology Computer Phobic AND Non-P 21.59

avg
==========================
13.50

Category Shortened Title Price
------------------- ------------------------- --------------------------
Traditional Cooking Fifty Years in Buckingham 11.95
Traditional Cooking Sushi, Anyone? 14.99
Traditional Cooking Onions, Leeks, and Garlic 20.95

avg
==========================
15.96

(21 row(s) affected)

B. 使用带有简单 CASE 函数和 CASE 搜索函数的

SELECT 语句
在 SELECT 语句中,CASE 搜索函数允许根据比较值在结果集内对值进行替换。

例子:根据图书的价格范围将价格(money 列)显示为文本注释。

复制代码 代码如下:

USE pubs
GO
SELECT 'Price Category' =
CASE
WHEN price IS NULL THEN 'Not yet priced'
WHEN price < 10 THEN 'Very Reasonable Title'
WHEN price >= 10 and price < 20 THEN 'Coffee Table Title'
ELSE 'Expensive book!'
END,
CAST(title AS varchar(20)) AS 'Shortened Title'
FROM titles
ORDER BY price
GO

结果集:

Price Category Shortened Title
--------------------- --------------------
Not yet priced Net Etiquette
Not yet priced The Psychology of Co
Very Reasonable Title The Gourmet Microwav
Very Reasonable Title You Can Combat Compu
Very Reasonable Title Life Without Fear
Very Reasonable Title Emotional Security:
Coffee Table Title Is Anger the Enemy?
Coffee Table Title Cooking with Compute
Coffee Table Title Fifty Years in Bucki
Coffee Table Title Sushi, Anyone?
Coffee Table Title Prolonged Data Depri
Coffee Table Title Silicon Valley Gastr
Coffee Table Title Straight Talk About
Coffee Table Title The Busy Executive's
Expensive book! Secrets of Silicon V
Expensive book! Onions, Leeks, and G
Expensive book! Computer Phobic And
Expensive book! But Is It User Frien

(18 row(s) affected)

C. 使用带有 SUBSTRING 和 SELECT 的 CASE 函数

例子,使用 CASE 和 THEN 生成一个有关作者、图书标识号和每个作者所着图书类型的列表。

首先,来看下 CASE 的语法。在一般的 SELECT 中,其语法如下:

复制代码 代码如下:

SELECT <myColumnSpec> =
CASE
WHEN <A> THEN <somethingA>
WHEN <B> THEN <somethingB>
ELSE <somethingE>
END

以上代码,需要用具体的参数代替尖括号中的内容。

甚至还可以组合这些选项,添加一个 ORDER BY 子句,例如:

复制代码 代码如下:

USE pubs
GO
SELECT
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END AS Range,
Title
FROM titles
GROUP BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
ORDER BY
CASE
WHEN price IS NULL THEN 'Unpriced'
WHEN price < 10 THEN 'Bargain'
WHEN price BETWEEN 10 and 20 THEN 'Average'
ELSE 'Gift to impress relatives'
END,
Title
GO

除了选择自定义字段之外,在很多情况下 CASE 都非常有用。

稍加深入,还可以得到以前认为不可能得到的分组排序结果集。
使用CASE WHEN进行字符串替换处理

在SELECT查询中使用CASE WHEN

复制代码 代码如下:

/*
mysql> SELECT Name, RatingID AS Rating,
-> CASE RatingID
-> WHEN 'R' THEN 'Under 17 requires an alt.'
-> WHEN 'X' THEN 'No one 17 and under.'
-> WHEN 'NR' THEN 'Use discretion when renting.'
-> ELSE 'OK to rent to minors.'
-> END AS Policy
-> FROM DVDs
-> ORDER BY Name;
+-----------+--------+------------------------------+
| Name | Rating | Policy |
+-----------+--------+------------------------------+
| Africa | PG | OK to rent to minors. |
| Amadeus | PG | OK to rent to minors. |
| Christmas | NR | Use discretion when renting. |
| Doc | G | OK to rent to minors. |
| Falcon | NR | Use discretion when renting. |
| Mash | R | Under 17 requires an alt. |
| Show | NR | Use discretion when renting. |
| View | NR | Use discretion when renting. |
+-----------+--------+------------------------------+
8 rows in set (0.01 sec)
*/
Drop table DVDs;
CREATE TABLE DVDs (
ID SMALLINT NOT NULL AUTO_INCREMENT PRIMARY KEY,
Name VARCHAR(60) NOT NULL,
NumDisks TINYINT NOT NULL DEFAULT 1,
RatingID VARCHAR(4) NOT NULL,
StatID CHAR(3) NOT NULL
)
ENGINE=INNODB;
INSERT INTO DVDs (Name, NumDisks, RatingID, StatID)
VALUES ('Christmas', 1, 'NR', 's1'),
('Doc', 1, 'G', 's2'),
('Africa', 1, 'PG', 's1'),
('Falcon', 1, 'NR', 's2'),
('Amadeus', 1, 'PG', 's2'),
('Show', 2, 'NR', 's2'),
('View', 1, 'NR', 's1'),
('Mash', 2, 'R', 's2');
SELECT Name, RatingID AS Rating,
CASE RatingID
WHEN 'R' THEN 'Under 17 requires an alt.'
WHEN 'X' THEN 'No one 17 and under.'
WHEN 'NR' THEN 'Use discretion when renting.'
ELSE 'OK to rent to minors.'
END AS Policy
FROM DVDs
ORDER BY Name;

‘肆’ 第三章 SQL语言元素(一)

InterSystems SQL命令(也称为SQL语句)以关键字开头,后跟一个或多个参数。其中一些参数可能是子句或函数,由它们自己的关键字标识。

InterSystems SQL关键字包括命令名称,函数名称,谓词条件名称,数据类型名称,字段约束,优化选项和特殊变量。它们还包括 AND , OR 和 NOT 逻辑运算符, NULL 列值指示符以及ODBC函数构造,例如 {d dateval} 和 {fn CONCAT(str1,str2)} 。

聚合函数是SQL固有函数,它计算列的所有值并返回单个聚合值。

这种写法只能在mac routine里,类文件里编译报错。

如果将用户提供的(外部)函数的使用配置为系统范围的选项,则该SQL语句只能调用用户提供的(外部)函数。默认为“否”。默认情况下,尝试调用用户提供的函数会发出 SQLCODE -372 错误。可以使用 %SYSTEM.SQL类的SetAllowExtrinsicFunctions() 方法在系统范围内配置SQL对外部函数的使用。若要确定当前设置,请调用 $SYSTEM.SQL.CurrentSettings() ,该显示显示“允许在SQL语句中使用外部函数”选项。

不能使用用户提供的函数来调用 %routine (名称以%字符开头的例程)。
尝试这样做会发出 SQLCODE -373 错误。

InterSystems SQL文字具有以下语法:

文字是一系列代表实际(文字)值的字符。它可以是数字或字符串。

空字符串是文字字符串;它由两个单引号字符( '' )表示。 NULL 不是文字值;它表示没有任何值。

注意:在嵌入式SQL中,不允许在字符串文字中使用以 ## 开头的一些字符序列,如“使用嵌入式SQL”一章的“文字值”中所述。此限制不适用于其他SQL调用,例如动态SQL。

使用单引号( ' )字符作为字符串定界符。 SQL兼容性支持双引号字符( “ )的使用,但由于与定界标识符标准冲突,因此强烈建议不要使用。将一对双引号字符 "" 解析为无效的定界标识符。并生成 SQLCODE -1 错误。

要在字符串中指定单引号字符作为字面字符,请指定一对这样的字符作为字面转义序列。
例如, 'a 'normal' string' 。

双竖条( || )是首选的SQL连接操作符。
它可以用于连接两个数字、两个字符串或一个数字和一个字符串。

下划线( _ )作为SQL连接操作符提供,以保证ObjectScript的兼容性。
此连接操作符只能用于连接两个字符串。

如果两个操作数都是字符串,并且两个字符串都具有相同的排序规则类型,则所得的级联字符串具有该排序规则类型。在所有其他情况下,连接的结果是排序类型 EXACT 。

使用 NULL 关键字表示没有指定值。
在SQL中, NULL 始终是表示数据值因任何原因未指定或不存在的首选方式。

SQL零长度字符串(空字符串)由两个单引号字符指定。
空字符串( " )与空字符串是不同的。
空字符串是一个已定义的值,一个不包含字符的字符串,一个长度为0的字符串。
一个零长度的字符串在内部由非显示字符 $CHAR(0) 表示。

注意:不建议使用SQL零长度字符串作为字段输入值或字段默认值。
使用 NULL 表示数据值的缺失。

在SQL编码中应避免使用SQL零长度字符串。
但是,由于许多SQL操作都会删除末尾的空格,所以只包含空格字符(空格和制表符)的数据值可能会导致SQL的零长度字符串。

注意,不同的SQL length函数返回不同的值: length 、 CHAR_LENGTH 和 DATALENGTH 返回SQL长度。
$LENGTH 返回ObjectScript表示长度。
长度不计算尾随空格;
所有其他长度函数都计算末尾的空格。

NOT NULL数据约束要求字段必须接收一个数据值;
不允许指定NULL而不是值。
这个约束不阻止使用空字符串值。

SELECT 语句的 WHERE 或 HAVING 子句中的 IS NULL 谓词选择空值;
它不选择空字符串值。

IFNULL 函数计算一个字段值,如果字段值为 NULL ,则返回第二个参数中指定的值。
它不会将空字符串值视为非空值。

COALESCE 函数从提供的数据中选择第一个非空值。
它将空字符串值视为非空值。

当 CONCAT 函数或 concenate 操作符( || )连接一个字符串和一个 NULL 时,结果是 NULL 。
如下面的例子所示:

AVG、COUNT、MAX、MIN 和 SUM 聚合函数在执行操作时忽略 NULL 值。
( COUNT * 统计所有行,因为不可能有一个所有字段都为空值的记录。)
SELECT 语句的 DISTINCT 关键字在其操作中包含 NULL ;
如果指定的字段有空值, DISTINCT 返回一个空行.

AVG 、 COUNT 和 MIN 、聚合函数受空字符串值的影响。
MIN 函数将空字符串视为最小值,即使存在值为0的行。
MAX 和 SUM 聚合函数不受空字符串值的影响。

对大多数SQL函数提供 NULL 作为操作数将返回 NULL 。

任何以NULL作为操作数的SQL算术操作都返回 NULL 值。
因此,7 +零=零。
这包括二元运算加法( + )、减法( - )、乘法( * )、除法( / )、整数除法( )和取模( # ),以及一元符号运算符加号( + )和减号( - )。

算术操作中指定的空字符串将被视为0(零)值。
除法( / ),整数除法( ),或对空字符串( 6/ " )取模( # )会导致 <DIVIDE> 错误。

在SQL中, NULL 的长度是没有定义的(它返回 < NULL > )。
然而,空字符串的长度被定义为长度为0。
如下面的例子所示:

如本例所示,SQL LENGTH 函数返回SQL长度。

可以使用 ASCII 函数将SQL的零长度字符串转换为 NULL ,示例如下:

但是,对标准 SQL 的某些系统间IRIS扩展对 NULL 和空字符串的长度的处理是不同的。
$LENGTH函数返回这些值的InterSystems IRIS内部表示: NULL 表示为长度为0的已定义值,SQL空字符串表示为长度为0的字符串。
该功能与ObjectScript兼容。

这些值的内部表示方式的另一个重要位置是 %STRING 、 %SQLSTRING 和 %SQLUPPER 函数,它们将空格附加到值中。
因为 NULL 实际上没有值,所以在它后面添加一个空格会创建一个长度为1的字符串。
但是一个空字符串确实有一个字符值,所以在它后面加上一个空格会创建一个长度为2的字符串。
如下面的例子所示:

注意,这个例子使用的是 CHAR_LENGTH ,而不是 LENGTH 。
因为 LENGTH 函数删除了末尾的空格,所以 LENGTH(%STRING(NULL)) 返回长度为0的字符串;
LENGTH(%STRING(")) 返回长度为2的字符串, 因为 %STRING 追加的是前导空格,而不是尾随空格。

当SQL NULL 输出到ObjectScript时,它由ObjectScript空字符串( "" )表示,长度为0的字符串。

当SQL零长度字符串数据输出到ObjectScript时,它由包含 $CHAR(0) 的字符串表示,该字符串长度为1。

在ObjectScript中,没有值通常用空字符串( "" )表示。
当这个值被传递到嵌入式SQL中时,它会被视为空值,如下面的例子所示:

如果指定了一个未定义的输入主机变量,嵌入式SQL将其值视为 NULL 。

当将NULL或空字符串值从嵌入式SQL传递到ObjectScript时, NULL 被转换为长度为0的字符串,空字符串被转换为长度为1的字符串。
如下面的例子所示:

在下面的例子中,SQL的空字符串加上一个空格被传递为长度为2的字符串:

‘伍’ SQl中的函数if的用法

这你看是对应的那种数据库了,不过一些简单到是通用的 如sum svg max min count,,,等等,

‘陆’ Sql 中如何在函数中传递表名参数

我查遍网络找不到,2020.06.28 18:45原创一个目前你能找到的唯一权宜之计:
因sql的函数本身不支持对实体表进行增、删、改,所以对实体表进行的insert、update、delete均不可用、另外exec也被禁用了,因为动态表名和动态字段值不会太多,所以想到写枚举解决。
--如果函数返回表为@ab table (a1 varchar(100), a2 varchar(100))
--如果表名为@tableName
if @tableName='表1'
insert into @ab select a1,a2 from 表1 where ...
if @tableName='表2'
insert into @ab select a1,a2 from 表2 where ...
如果有字段名参数为@fieldName,字段值参数@fieldValue
if @fieldName='a1'
delete from @ab where a1 not like '%' + @fieldValue + '%'
if @fieldName='a2'
delete from @ab where a2 not like '%' + @fieldValue + '%'
--对@ab的其它业务逻辑
...
return

‘柒’ SQL存储过程中如何实现多参数协调查询

定义5个参数,然后调用此存储过程的时候传参数的时候指定参数名称即可,传几个就是几个

‘捌’ sql语句中if判断条件怎么写

sql语句中if判断条件是结合select语句使用的。IF函数也能通过判断条件来返回特定值,它的语法如下:IF(expr,result_true,result_false)。

expr是一个条件表达式,如果结果为true,则返回result_true,否则返回result_false。在一些场景中,IF函数和CASE WHEN是有同样效果的,前者相对简单,后者能应对更复杂的判断。另外,IF函数还可以和聚合函数结合。

SQL其他情况简介。

SQL是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。

结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统, 可以使用相同的结构化查询语言作为数据输入与管理的接口。