HQL 查询

HQL 查询
HQL 查询

Hibernate提供了强大的查询系统,使用Hibernate有多种查询方法可以选择:可以使用Hibernate的HQL查询,也可以使用条件查询,甚至可以使用原生的SQL 查询语句。其中HQL查询时Hibernate配置的功能强大的查询语句。HQL是非常有意识的被设计为完全面向对象的查询,它可以理解如继承、多态和关联之类的概念。

一、HQL查询

HQL的语法和SQL很相似,但是HQL是一种面向对象的查询语句,它的操作对象是类、实例、属性等,而SQL的操作对象是数据表、列等数据库对象。

由于HQL是完全面向对象的查询语句,因此可以支持继承、多态等特性。 HQL查询依赖于Query类,每一个Query实例对应一个查询对象,它的执行是通过Session的createQuery()方法来获得的。

执行HQL查询的步骤:

1、获得Hibernate Session对象

2、编写HQL语句

3、调用Session的createQuery方法创建查询对象

4、如果HQL语句包含参数,则调用Query的setXxx方法为参数赋值

5、调用Query对象的list等方法返回查询结果。

实例:

上面的程序先编写HQL语句后,使用Session的createQuery(hql)方法创建一个Query,Query对象使用setXxx方法为HQL语句的参数赋值,最后调用list()方法返回查询的全部结果。

在这里Query对象可以连续多次调用setXxx方法为HQL参数赋值。这是因为Hibernate Query的setXxx方法的返回值为Query本身,因此程序创建Query后,可以直接多次调用setXxx方法为HQL语句的参数赋值。

Query对象还包含如下两个方法:

setFirstResult(int firstResult):设置返回的结果集从第几条记录开始

setMaxResult(int maxResult):设置本次查询返回的结果数目这两个方法用于对HQL查询实现分页控制

二、HQL查询的from子句

Hibernate中最简单的查询语句的形式如下:

Hibernate中最简单的查询语句的形式如下:

From关键字后面紧跟持久化类的类名。

大多数情况下, 你需要指定一个别名, 原因是你可能需要在查询语句的其它部分引用到Person

子句中可以同时出现多个类, 其查询结果是产生一个笛卡儿积或产生跨表的连接

三、关联与连接

当程序需要从多个数据表中获取数据时,Hibernate使用关联映射来处理底层数据表之间的连接,一旦我们提供了正确的关联映射后,当程序通过Hibernate 进行持久化访问时,将可利用Hibernate的关联来进行连接。

HQL支持两种关联join的形式:implicit(隐式)与explicit(显式)。

显式form子句中明确给出了join关键字,而隐式使用英文点号(.)来连接关联实体。

受支持的连接类型是从ANSI SQL中借鉴来的。

inner join(内连接)

left outer join(左外连接)

right outer join(右外连接)

full join (全连接,并不常用)

使用显式连接,可以通过with关键字来提供额外的join条件

从上面可以看出with关键字的作用等同于SQL中on关键字的作用:用于指定连接条件。还有,一个"fetch"连接允许仅仅使用一个选择语句就将相关联的对象或一组值的集合随着他们的父对象的初始化而被初始化,这种方法在使用到集合的情况下尤其有用,对于关联和集合来说,它有效的代替了映射文件中的外联接与延迟声明(lazy declarations)。

对于隐式连接和显示连接有如下两个区别:

1、显式连接底层将转换成SQL99的交叉连接,显式连接底层将转换成SQL99的inner join、left join、right join等连接。

2、隐式连接和显式连接查询后返回的结果不同。使用隐式连接查询返回的结果是多个被查询实体组成的集合。使用显式连接的结果分为两种:如果HQL 语句中省略select关键字时,返回的结果也是集合,但集合元素是被查询持久化对象、所有被关联的持久化对象所组成的数组。如果没有省略select关键字,返回的结果同样是集合,集合中的元素是跟在select关键字后的持久化对象组成的数组。

........1中返回的结构是有Person实体和MyEvent实体组成的数组集合。而.........2 返回的结果是只有Person组成的集合。

对于有集合属性的。Hibernate默认采用延迟加载策略。如对于持久化类Person,有集合属性myEvent。加载Person实例时,默认是不加载myEvent的,如果session被关闭了,Person实例将会无法访问到关联的myEvent属性的。为了解决这个问题,可以再Hibernate映射文件中配置指定:lazy="false"来关闭延迟加载。或者使用join fetch:

一个fetch连接通常不需要被指定别名, 因为相关联的对象不应当被用在where 子句(或其它任何子句)中。同时,相关联的对象并不在查询的结果中直接返回,但可以通过他们的父对象来访问到他们。

使用fetch关键字时需要注意以下几个问题:

1、fetch不应该与setMaxResults()和setFirstResults()共用,

2、fetch不能与独立的with条件一起使用

3、如果在一次查询中fetch多个集合,可以查询返回的笛卡尔积

4、full join fetch和right join fetch没有任何意义

5、对于bag映射而言,同时join fetch多个结合时可能会出现非预期结果

四、select子句

Select子句用于选择将哪些对象与属性返回到查询结果集中。当然select 选择的属性必须是from后持久化类包含的属性。

select查询语句可以返回值为任何类型的属性,包括返回类型为某种组件(Component)的属性:

select查询语句可以返回多个对象和(或)属性,存放在Object[]队列中:

Select查询语句也支持将选择出的属性存放到一个List对象中

Select查询语句还可以将选择出的属性直接封装成一个对象。

但前提是ClassTest支持p.id,https://www.360docs.net/doc/28298191.html,,p.age的构造前,假如p.id的数据类型是int,https://www.360docs.net/doc/28298191.html, 的数据类型是String,p.age的数据类型是int,那么ClassTest必须有如下构造器:

Select还支持给选定的表达式名别名:

种做法在与子句select new map一起使用时最有用:

五、聚集函数

受支持的聚集函数如下:

avg(...), sum(...), min(...), max(...)

count(*)

count(...), count(distinct ...), count(all...)

Select子句也支持使用distinct和all关键字,此时的效果与SQL中的效果相同。

六、多态查询

Hibernate可以理解多态查询,from后跟持久化类名,不仅会查出该持久化类的全部实例还好查询出该类的全部子类的全部实例。

该查询语句不仅会查询出Person的全部实例,还会查询出Person的子类:Teacher的全部属性。

Hibernate 可以在from子句中指定任何 Java 类或接口. 查询会返回继承了该类的所有持久化子类的实例或返回声明了该接口的所有持久化类的实例。下面的查询语句返回所有的被持久化的对象:

七、Where子句

where子句允许你将返回的实例列表的范围缩小. 如果没有指定别名,你可以使用属性名来直接引用属性:

如果指派了别名,需要使用完整的属性名:

复合属性表达式增强了where子句的功能:

该查询语句被翻译为一个含有内连接的SQL查询语句。

只要没有出现集合属性,HQL语句可使用点号来隐式连接多个数据表:

特殊属性(小写)id可以用来表示一个对象的唯一的标识符

第二个查询是有效的。此时不需要进行表连接,而完全使用面向对象的方式查询!

在进行多态持久化的情况下,class关键字用来存取一个实例的鉴别之。嵌入where自己中的java类名将会被作为该类的鉴别值。

在执行多态的时候,默认会选出Person及其所有子类的实例,但是上面的HQL语句,将只会选出Teacher类的实例。

当where子句的运算符只支持基本类型或者字符串时,where子句中的属性表达式必须以基本类型或者字符串结尾,不要使用组件类型属性结尾。

八、order by 子句

查询返回的列表(list)可以按照一个返回的类或组件(components)中的任何属性(property)进行排序:

可选的asc或desc关键字指明了按照升序或降序进行排序.

九、group by子句

一个返回聚集值(aggregate values)的查询可以按照一个返回的类或组件(components)中的任何属性(property)进行分组:

可以使用having子句对分组进行过滤

注意:group by子句与 order by子句中都不能包含算术表达式。也要注意Hibernate目前不会扩展group的实体,因此你不能写group by cat,除非cat的所有属性都不是聚集的。你必须明确的列出所有的非聚集属性。

注意:group by子句与 order by子句中都不能包含算术表达式。也要注意Hibernate目前不会扩展group的实体,因此你不能写group by cat,除非cat的所有属性都不是聚集的。你必须明确的列出所有的非聚集属性。

与SQL子查询相同,如果子查询是多行结果集,则应该使用多行运算符。同时HQL子查询只可以在select子句或者where子句中出现。

如果在select子查询或的列表中包含多项,则在HQL中需要使用一个元组构造符:

十一、命名查询

HQL查询还支持将查询所用的HQL语句放在配置文件中,而不是程序代码中。通过这种方式,可以大大提高程序的解耦。

在Hibernate映射文件中使用元素来定义命名查询。使用元素是需要指定一个name属性,该属性指定该命名查询的名字。

Session提供一个getNamedQuery(String name)方法用于获取指定命名HQL查询并且创建Query对象。

查找函数汇总

只会Vlookup函数Out了!Excel查找公式全在这儿1、普通查找 查找李晓峰的应发工资 =VLOOKUP(H2,B:F,5,0) 2、反向查找 查找吴刚的员工编号 =INDEX(A:A,MATCH(H2,B:B,0)) 3、交叉查找 查找3月办公费的金额

=VLOOKUP(H2,A:F,MATCH(I2,1:1,0),0) 4、多条件查找 查找上海产品B的销量 =LOOKUP(1,0/((A2:A7=E2)*(B2:B7=F2)),C2:C7) 5、区间查找 根据销量从右表中查找提成比率。 =LOOKUP(A2,$D$2:$E$5) ? 6、双区间查找

根据销量和比率完成情况,从表中查找返利。 =INDEX(B3:F7,MATCH(D11,A3:A7),MATCH(E11,B2:F2)) 7、线型插值 如下图所示,A列是数量,B列是数量对应的系数值。现要求出数字8所对应的系数值。 =TREND(OFFSET(B1,MATCH(D3,A2:A6,1),,2,1),OFFSET(A1,MATCH(D3,A2:A6,1),,2,1),D 3) ?

8、查找最后一个符合条件记录 如下图所示,要求查找A产品的最后一次进价。 =LOOKUP(1,0/(B2:B9=A13),C2:C9) ? 9、模糊查找 如下图所示,要求根据提供的城市从上表中查找该市名的第2列的值。=VLOOKUP("*"&A7&"*",A1:B4,2,0) 10、匹配查找 如下图所示,要求根据地址从上表中查找所在城市的提成。 =lookup(9^9.find(A$3:A$6,A10),B$3:B$6) ?

SQL语句查询中常用的函数

一、字符转换函数 1、ASCII() 返回字符表达式最左端字符的ASCII 码值。在ASCII()函数中,纯数字的字符串可不用‘’括起来,但含其它字符的字符串必须用‘’括起来使用,否则会出错。 2、CHAR() 将ASCII 码转换为字符。如果没有输入0 ~ 255 之间的ASCII 码值,CHAR()返回NULL 。 3、LOWER()和UPPER() LOWER()将字符串全部转为小写;UPPER()将字符串全部转为大写。 4、STR() 把数值型数据转换为字符型数据。 STR ([,length[, ]]) length 指定返回的字符串的长度,decimal 指定返回的小数位数。如果没有指定长度,缺省的length 值为10, decimal 缺省值为0。 当length 或者decimal 为负值时,返回NULL; 当length 小于小数点左边(包括符号位)的位数时,返回length 个*; 先服从length ,再取decimal ; 当返回的字符串位数小于length ,左边补足空格。 二、去空格函数 1、LTRIM() 把字符串头部的空格去掉。 2、RTRIM() 把字符串尾部的空格去掉。 三、取子串函数 1、left() LEFT () 返回character_expression 左起 integer_expression个字符。 2、RIGHT() RIGHT () 返回character_expression 右起 integer_expression个字符。 3、SUBSTRING() SUBSTRING (, length) 返回从字符串左边第starting_ position 个字符起length个字符的部分。 四、字符串比较函数 1、CHARINDEX()

EXCEL中查找函数的妙用

EXCEL中查找函数的妙用 作为一个电子表格处理程序,EXCEL除了具有强大的计算和汇总功能外,其内嵌的各类功能函数在进行表格处理中给我们提供了极大的便利,可以极高的提高工作效率和准确性。 下面介绍几个在实际工作中可能会经常用到的查找函数:MATCH()、LOOKUP()、HLOOKUP()、VLOOKUP(),这些查找函数不仅仅具有查对的功能,同时还能根据查找的结果和参数的设定得到我们需要的数值。特别是这几个函数的配合使用,并以两个逻辑函数IF()和ISERROR()辅助,我们就可以在两个或多个有一定关联的工作簿中动态生 成新的数据列。 1.MATCH() 格式:MATCH(lookup_value,lookup_array,match_type) 从英文含义我们可以看出,它是一个匹配的函数,主要功能是按照match_type参 数所指定的查找方式,在lookup_array参数所代表的数据组中查找lookup_value参数代表的数值,如果查找成功则返回lookup_value在lookup_array中的位置,不成功返 回错误信息#N/A。 EXCEL在“编辑”菜单中提供的“查找”功能只能进行单一数值的查找,而MATCH()函数可以实现批量数值的查找,所需要的只是在需要查找的首个单元格中定义好该函数,然后拖动该单元格直至到需要的范围,所有需要查对单元格的查找结果会自动完成。 参数解释: lookup_value——需要查找的值,可以是实际的数字、字符串或逻辑值,也可以是某一单元格的引用,通常使用单元格的引用; lookup_array——查找范围,可以是定义的数组,也可以是自定义的多个连续单元格的引用,这个引用我们可以通过两种方式实现: ?直接输入连续单元格的地址,通常使用绝对引用地址,如$B$2:$B$50; ?选定一个连续的单元格区域后,通过“插入”菜单中“定义”项的“名称”给这段单元格区域定义一个名称,如NAME1,这样在以后所有使用该单元格区域的时候都可以用定义的名称代表。 match_type,查找的方式,其值为-1、0、1,默认为1。其中-1是在lookup_array查找大于或等于lookup_value的最小数值,要求lookup_array必须按降序排列;0是在lookup_array查找等于lookup_value的第一个数值,不需要排序;1是在lookup_array 查找小于或等于lookup_value的最大数值,要求lookup_array必须按升序排列。 函数举例: 例1:有两个工作簿 BOOK1和BOOK2,它们的SHEET1中都具有名为“卡片号”的列,列标为B(假设BOOK1中该列包含数据的单元格为B2:B80,BOOK2中包含数据的单元格为 B2:B1000),想查对一下BOOK1中的卡片号是否能够在BOOK2中的卡片号中全部查找到。

Excel中三个查找引用函数的用法(十分有用)

在Excel中,我们经常会需要从某些工作表中查询有关的数据复制到另一个工作表中。比如我们需要把学生几次考试成绩从不同的工作表中汇总到一个新的工作表中,而这几个工作表中的参考人数及排列顺序是不完全相同的,并不能直接复制粘贴。此时,如果使用Excel的VLOOKUP、INDEX或者OFFSET函数就可以使这个问题变得非常简单。我们以Excel 2007为例。 图1 假定各成绩工作表如图 1所示。B列为,需要汇总的项目“总分”及“名次”位于H列和I列(即从B列开始的第7列和第8列)。而汇总表则如图2所示,A列为列,C、D两列分别为要汇总过来的第一次考试成绩的总分和名次。其它各次成绩依次向后排列。

图2 一、 VLOOKUP函数 我们可以在“综合”工作表的C3单元格输入公式“=VLOOKUP($B3,第1次!$B$1:$I$92,7,FALSE)”,回车后就可以将第一位同学第一次考试的总分汇总过来了。 把C3单元格公式复制到D3单元格,并将公式中第三个参数“7”改成“8”,回车后,就可以得到该同学第一次考试名次。 选中C3:D3这两个单元格,向下拖动填充句柄到最后就可以得到全部同学的总分及名次了。是不是很简单呀?如图3所示。

VLOOKUP函数的用法是这样的:VLOOKUP(参数1,参数2,参数3,参数4)。“参数1”是“要查找谁?”本例中B3单元格,那就是要查找B3单元格中显示的人名。“参数2”是“在哪里查找?”本例中“第1次!$B$1:$I$92”就是告诉Excel在“第1次”工作表的B1:I92单元格区域进行查找。“参数3”是“找第几列的数据?”本例中的“7”就是指从“第1次”工作表的B列开始起,第7列的数据,即H列。本例中“参数4”即“FALSE”是指查询方式为只查询精确匹配值。 该公式先在“第1次”工作表的B!:I92单元格区域的第一列(即B1:B92单元格区域)查找B3单元格数据,找到后,返回该数据所在行从B列起第7列(H列)的数据。所以,将参数3改成“8”以后,则可以返回I列的数据。 由此可以看出,使用VLOOKUP函数时,参数1的数据必须在参数2区域的第一列中。否则是不可以查找的。 二、INDEX函数 某些情况下,VLOOKUP函数可能会无用武之地,如图4所示。“综合”工作表中,列放到了A 列,而B列要求返回该同学所在的班级。但我们看前面的工作表就知道了,“班级”列是位于“”列前面的。所以,此时我们不可能使用VLOOKUP函数来查找该同学的班级。而INDEX函数就正可以一试身手。

EXCEL中查找函数的妙用

EXCEL中查找函数的妙用(巨好用的公式) 作为一个电子表格处理程序,EXCEL除了具有强大的计算和汇总功能外,其内 嵌的各类功能函数在进行表格处理中给我们提供了极大的便利,可以极高的提高工作效率和准确性。 下面介绍几个在实际工作中可能会经常用到的查找函数:MATCH()、LOOKUP()、HLOOKUP()、VLOOKUP(),这些查找函数不仅仅具有查对的功能,同时还能根据查找的结果和参数的设定得到我们需要的数值。特别是这几个函数的配合使用,并以两个逻辑函数IF()和ISERROR()辅助,我们就可以在两个或多个有一定关联的工作簿中动态生成新的数据列。 1.MATCH() 格式:MATCH(lookup_value,lookup_array,match_type) 从英文含义我们可以看出,它是一个匹配的函数,主要功能是按照match_type参数所指定的查找方式,在lookup_array参数所代表的数据组中查找 lookup_value参数代表的数值,如果查找成功则返回lookup_value在 lookup_array中的位置,不成功返回错误信息#N/A。 EXCEL在“编辑”菜单中提供的“查找”功能只能进行单一数值的查找,而MATCH()函数可以实现批量数值的查找,所需要的只是在需要查找的首个单元格中定义好该函数,然后拖动该单元格直至到需要的范围,所有需要查对单元格的查找结果会自动完成。 参数解释: lookup_value——需要查找的值,可以是实际的数字、字符串或逻辑值,也可以是某一单元格的引用,通常使用单元格的引用; lookup_array——查找范围,可以是定义的数组,也可以是自定义的多个连续单元格的引用,这个引用我们可以通过两种方式实现: ? 直接输入连续单元格的地址,通常使用绝对引用地址,如$B$2:$B$50; ? 选定一个连续的单元格区域后,通过“插入”菜单中“定义”项的“名称”给这段单元格区域定义一个名称,如NAME1,这样在以后所有使用该单元格区域的时候都可 以用定义的名称代表。

Excel查询函数

1、 LOOKUP函数与MATCH函数 LOOKUP函数可以返回向量(单行区域或单列区域)或数组中的数值。此系列函数用于在表 格或数值数组的首行查找指定的数值,并由此返回表格或数组当前列中指定行处的数值。当比较值位于数据表的首行,并且要查找下面给定行中的数据时,使用函数 HLOOKUP。当比较值位于要进行数据查找的左边一列时,使用函数 VLOOKUP。 如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用函数 MATCH 而不是函 数 LOOKUP。MATCH函数用来返回在指定方式下与指定数值匹配的数组中元素的相应位置。 从以上分析可知,查找函数的功能,一是按搜索条件,返回被搜索区域内数据的一个数据值;二是按搜索条件,返回被搜索区域内某一数据所在的位置值。利用这两大功能,不仅能实现数据的查询,而且也能解决如"定级"之类的实际问题。 2、 LOOKUP用于返回向量(单行区域或单列区域)或数组中的数值。 函数 LOOKUP 有两种语法形式:向量和数组。 (1)向量形式 函数 LOOKUP 的向量形式是在单行区域或单列区域(向量)中查找数值,然后返回第二个单行区域或单列区域中相同位置的数值。 其基本语法形式为LOOKUP(lookup_value,lookup_vector,result_vector) Lookup_value为函数 LOOKUP 在第一个向量中所要查找的数值。Lookup_value 可以为数字、文本、逻辑值或包含数值的名称或引用。 Lookup_vector为只包含一行或一列的区域。Lookup_vector 的数值可以为文本、数字或逻辑值。 需要注意的是Lookup_vector 的数值必须按升序排序:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE;否则,函数 LOOKUP 不能返回正确的结果。文本不区分大小写。 Result_vector 只包含一行或一列的区域,其大小必须与 lookup_vector 相同。 如果函数 LOOKUP 找不到 lookup_value,则查找 lookup_vector 中小于或等 于 lookup_value 的最大数值。 如果 lookup_value 小于 lookup_vector 中的最小值,函数 LOOKUP 返回错误值 #N/A。 示例详见图3

参数的使用及查询函数

定义参数(Parameters) 除非特别申明,否则下面这些说明将同时适用于标量参数和数组参数。如果是仅仅对数组有效的,将特别说明。 你可以给参数赋一个值或者将ANSYS中的一些数据代回赋给参数。如何从ANSYS中获得数据请看关于*GET及一些“在线获取函数(in-line get functions)”。下面我们将详细地讲解这些相关信息。 你可以使用*SET命令来定义参数并给参数赋值。下面我们举个简单的例子来说明: *SET,ABC,-24 *SET,QR,2.07E11 *SET,XORY,ABC *SET,CPARM,'CASE1' 当然,你也可以使用“=”,就象C语言、FORTURN语言那样直接给参数赋值,这使用起来更加方便。使用的格式是:参数名=值。这里的参数名就是你将要给他赋值的参数,值就是数值或者字符或者字符串。对于字符参数而言,字符或者字符串必须加上单引号‘’(在英文输入状态下,译者注),同时不超过8个字母(包括下划线在内)。下面举个例子: ABC=-24 QR=2.07E11 XORY=ABC CPARM='CASE1' 在用户图形界面UGI下,你也可以直接在对话框的输入窗口键入上面所说的命令,或者在菜单工具栏:Utility Menu> Parameters> Scalar Parameters产生的对话框中"Selection"的位置键入上述命令。 下面我们再来重点讲解ANSYS中如何从程序中获得数据并赋值给参数。在ANSYS中,有两个强大的方法来完成这样的功能,其一是*GET函数,另外一个就是所谓的“在线查询函数”。*GET命令获得一个指定的数据并把它保存到一个指定的参数中去,而在线查询函数则可以直接在表达式中使用。每个查询函数都可以从某一个特定的项目中返回一个指定的数据。 *GET命令(Utility Menu> Parameters> Get Scalar Data)从程序中返回一个项目(例如节点、线、面、关键点)的指定数据(例如节点编号、实常数、坐标等信息)。例如:*GET,A,ELEM,5,CENT,X 就是返回5号单元的质心X坐标并把它赋给参数A保存下来。 *GET命令的格式如下: *GET,Par,Entity,ENTNUM,Item1,IT1NUM,Item2,IT2NUM 其中: Par:准备用来存储返回数据的参数名。 Entity:要查询的项目的关键词。有效的有例如NODE, ELEM, KP, LINE, AREA, VOLU等等。完整的项目列表我们将在后面给出。 ENTNUM:实体的编号,如果是0,则表示所有的实体。 Item1:某个特定的实体的项目名。例如如果实体是ELEM,Item1可以是NUM(已经选定的最大或者最小单元号)或者是COUNT(已经选定的单元号码)。Item1的全部可用值将在后面列表详细说明。 你可以认为*GET命令后面的申明就是个逐层展开的树状结构。从一般到具体。 下面的一些例子示例了*GET命令的用法: *GET,BCD,ELEM,97,ATTR,MAT ! BCD = Material number of element 97 *GET,V37,ELEM,37,VOLU ! V37 = volume of element 37 *GET,EL52,ELEM,52,HGEN ! EL52 = value of heat generation in element 52 *GET,OPER,ELEM,102,HCOE,2 ! OPER = heat coefficient of element 102,face2

查询函数和信息函数

附录1:信息查询函数 1. 例子说明 Here is just about everything I know about inquiry functions. They are similar to *GET functions in usage, and have two input arguments. Here's an example. a=ndinqr(33,1) In this case, "a" will be assigned a value of -1 if node 33 is unselected, 0 if it is undefined, and 1 if it is selected. This is an example of using an inquiry function to obtain information about a specific entity, in this case node 33. An alternative use of an inquiry function is to find more generic data about a certain kind of entities. The following example illustrates this. a=ndinqr(0,14) This will assign to parameter "a" the highest node number defined in the model. Notice that the first argument is zero, and the second argument is 14. 2. 常用信息查询函数 1)两参数类型 Here are the inquiry functions I am aware of:节点、单元、关键点、线、面、体;单元类型、实常数、材料特性、截面;裂隙单元、主自由度、约束方程、自由度耦合、节点力;坐标系、警告错误信息。 Nodes ndinqr(node,key) node - node number, should be 0 for key = 12, 13, 14 key - information needed = 1, return select status: = 12, return number of defined nodes = 13, return number of selected nodes

excel 中的查询和引用(index,math,lookup,hlookup,vlookup)函数

index函数 说明: 返回表格或区域中的值或值的引用。函数INDEX有两种形式:数组形式和引用形式。 A、数组形式: INDEX(array, row_num, [column_num]) Array 必需。(1)如果数组只包含一行或一列,则相对应的参数row_num或column_num 为可选参数。(2)如果数组有多行和多列,但只使用row_num或column_num,函数INDEX 返回数组中的整行或整列,且返回值也为数组。 Row_num 必需。选择数组中的某行,函数从该行返回数值。如果省略row_num,则必须有column_num。 Column_num 可选。选择数组中的某列,函数从该列返回数值。如果省略column_num,则必须有row_num。 B、引用形式: INDEX(reference, row_num, [column_num], [area_num]) Reference 必需。对一个或多个单元格区域的引用。 如果为引用输入一个不连续的区域,必须将其用括号括起来。 如果引用中的每个区域只包含一行或一列,则相应的参数row_num或column_num分别为可选项。例如,对于单行的引用,可以使用函数INDEX(reference,,column_num)。 Row_num必需。引用中某行的行号,函数从该行返回一个引用。 Column_num可选。引用中某列的列标,函数从该列返回一个引用。 Area_num可选。选择引用中的一个区域,以从中返回row_num和column_num的交叉区域。选中或输入的第一个区域序号为1,第二个为2,依此类推。如果省略area_num,则函数INDEX 使用区域1。

EXCEL中查找函数的妙用

EXCELxx查找函数的妙用 作为一个电子表格处理程序,EXCEL除了具有强大的计算和汇总功能外,其内嵌的各类功能函数在进行表格处理中给我们提供了极大的便利,可以极高的提高工作效率和准确性。 下面介绍几个在实际工作中可能会经常用到的查找函数: MATCH()、LOOKUP()、HLOOKUP()、VLOOKUP(),这些查找函数不仅仅具有查对的功能,同时还能根据查找的结果和参数的设定得到我们需要的数值。特别是这几个函数的配合使用,并以两个逻辑函数IF()和ISERROR()辅助,我们就可以在两个或多个有一定关联的工作簿中动态生成新的数据列。 1.MATCH() 格式: MATCH(lookup_value,lookup_array,match_type) 从英文含义我们可以看出,它是一个匹配的函数,主要功能是按照match_type 参数所指定的查找方式,在lookup_array参数所代表的数据组中查找 lookup_value参数代表的数值,如果查找成功则返回lookup_value在lookup_array 中的位置,不成功返回错误信息#N/A。 EXCEL在“编辑”菜单中提供的“查找”功能只能进行单一数值的查找,而MATCH()函数可以实现批量数值的查找,所需要的只是在需要查找的首个单元格中定义好该函数,然后拖动该单元格直至到需要的范围,所有需要查对单元格的查找结果会自动完成。 参数解释: lookup_value——需要查找的值,可以是实际的数字、字符串或逻辑值,也可以是某一单元格的引用,通常使用单元格的引用; lookup_array——查找范围,可以是定义的数组,也可以是自定义的多个连续单元格的引用,这个引用我们可以通过两种方式实现:

LOOKUP函数的几种经典用法

LOOKUP函数的几种经典用法 篇外话:对于lookup的计算原理,可以自行百度搜索Excel二分法原理了解,这方面的内容要细说比较复杂,不过要想用好lookup也不是非得掌握这个原理不可,好比很多数学公式,我们都是直接拿来用,但是要去证明或者推导公式,就需要更多的专业理论才行。当然,如果以后有机会的话,会用比较通俗好理解的言辞来专题讨论二分法了。本帖目的在于将lookup函数的常用写法进行整理后方便使用者随时查找套用,用的多了自然会达到熟能生巧的效果,更重要的是,lookup的计算效率和功能之强大的确是令人称赞的。 一、逆向查找、多条件查找: 先看例题: 一般这样的查找可以使用vlookup或者index+match这些函数和数组配合使用来实现需要,但是使用lookup的话只要记得查找公式的标准格式,然后不管多少个条件,都可以自己套写公式了。 例一公式为:=LOOKUP(1,0/(B2:B9=G2),A2:A9) 例二公式为:=LOOKUP(1,0/((A2:A9=G6)*(C2:C9=H6)),B2:B9) 这两个公式就是LOOKUP函数最典型用法。可以归纳:=LOOKUP(1,0/(条件),目标区域或数组)其中,条件可以是多个逻辑判断相乘组成的多条件数组,=LOOKUP(1,0/((条件1)*( 条件2)* ( 条件N)),目标区域或数组) 使用要求:能够理解条件的写法以及目标区域的写法,记准公式格式,注意条件之间的括号,切不可配错哦。 二、要查询A列中的最后一个文本,也非LOOKUP函数莫属,用到的公式是: =LOOKUP("々",A:A ) "々"通常被看做是一个编码较大的字符,它的输入方法为组合键。如果感觉每次写这个符号有点费事儿,也可以写成: =LOOKUP("座",A:A ) 一般情况下,第一参数写成“座”也可以返回一列或一行中的最后一个文本。 三、要查询A列中的最后一个数值,用到的公式是:

EXCEL中查找函数的妙用

EXCEL中查找函数的妙用 2009-07-06 10:14作为一个电子表格处理程序,EXCEL除了具有强大的计算和汇总功能外,其内嵌的各类功能函数在进行表格处理中给我们提供了极大的便利,可以极高的提高工作效率和准确性。 下面介绍几个在实际工作中可能会经常用到的查找函数:MATCH()、LOOKUP()、HLOOKUP()、VLOOKUP(),这些查找函数不仅仅具有查对的功能,同时还能根据查找的结果和参数的设定得到我们需要的数值。特别是这几个函数的配合使用,并以两个逻辑函数IF()和ISERROR()辅助,我们就可以在两个或多个有一定关联的工作簿中动态生成新的数据列。 1.MATCH() 格式:MATCH(lookup_value,lookup_array,match_type) 从英文含义我们可以看出,它是一个匹配的函数,主要功能是按照match_type参数所指定的查找方式,在lookup_array参数所代表的数据组中查找 lookup_value参数代表的数值,如果查找成功则返回lookup_value在 lookup_array中的位置,不成功返回错误信息#N/A。 EXCEL在“编辑”菜单中提供的“查找”功能只能进行单一数值的查找,而MATCH()函数可以实现批量数值的查找,所需要的只是在需要查找的首个单元格中定义好该函数,然后拖动该单元格直至到需要的范围,所有需要查对单元格的查找结果会自动完成。 参数解释: lookup_value——需要查找的值,可以是实际的数字、字符串或逻辑值,也可以是某一单元格的引用,通常使用单元格的引用; lookup_array——查找范围,可以是定义的数组,也可以是自定义的多个连续单元格的引用,这个引用我们可以通过两种方式实现: 直接输入连续单元格的地址,通常使用绝对引用地址,如$B$2:$B$50;" "选定一个连续的单元格区域后,通过“插入”菜单中“定义”项的“名称”给这段单元格区域定义一个名称,如NAME1,这样在以后所有使用该单元格区域的时候都可以用定义的名称代表。 match_type,查找的方式,其值为-1、0、1,默认为1。其中-1是在lookup_array 查找大于或等于lookup_value的最小数值,要求lookup_array必须按降序排列;0是在lookup_array查找等于lookup_value的第一个数值,不需要排序;1是在lookup_array查找小于或等于lookup_value的最大数值,要求 lookup_array必须按升序排列。 函数举例: 例1:有两个工作簿 BOOK1和BOOK2,它们的SHEET1中都具有名为“卡片号”的列,列标为B(假设BOOK1中该列包含数据的单元格为B2:B80,BOOK2中包含数据

excel查询与引用函数:HLOOKUP、LOOKUP、MATCH、VLOOKUP

excel查询与引用函数:HLOOKUP、LOOKUP、MA TCH、VLOOKUP 1、 LOOKUP函数与MATCH函数 LOOKUP函数可以返回向量(单行区域或单列区域)或数组中的数值。此系列函数用于在表格或数值数组的首行查找指定的数值,并由此返回表格或数组当前列中指定行处的数值。当比较值位于数据表的首行,并且要查找下面给定行中的数据时,使用函数 HLOOKUP。当比较值位于要进行数据查找的左边一列时,使用函数 VLOOKUP。 如果需要找出匹配元素的位置而不是匹配元素本身,则应该使用函数 MATCH 而不是函数 LOOKUP。MATCH函数用来返回在指定方式下与指定数值匹配的数组中元素的相应位置。从以上分析可知,查找函数的功能,一是按搜索条件,返回被搜索区域内数据的一个数据值;二是按搜索条件,返回被搜索区域内某一数据所在的位置值。利用这两大功能,不仅能实现数据的查询,而且也能解决如"定级"之类的实际问题。 2、 LOOKUP用于返回向量(单行区域或单列区域)或数组中的数值。 函数 LOOKUP 有两种语法形式:向量和数组。 (1)向量形式 函数 LOOKUP 的向量形式是在单行区域或单列区域(向量)中查找数值,然后返回第二个单行区域或单列区域中相同位置的数值。 其基本语法形式为LOOKUP(lookup_value,lookup_vector,result_vector) Lookup_value为函数 LOOKUP 在第一个向量中所要查找的数值。Lookup_value 可以为数字、文本、逻辑值或包含数值的名称或引用。 Lookup_vector为只包含一行或一列的区域。Lookup_vector 的数值可以为文本、数字或逻辑值。 需要注意的是Lookup_vector 的数值必须按升序排序:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE;否则,函数 LOOKUP 不能返回正确的结果。文本不区分大小写。 Result_vector 只包含一行或一列的区域,其大小必须与 lookup_vector 相同。 如果函数 LOOKUP 找不到 lookup_value,则查找 lookup_vector 中小于或等于 lookup_value 的最大数值。 如果 lookup_value 小于 lookup_vector 中的最小值,函数 LOOKUP 返回错误值 #N/A。 示例详见图3

Excel 函数——查找和引用函数

第5章查找和引用函数 在Excel中,查找和引用函数的主要功能是查询各种信息。在数据量很大的工作表中,Excel的查找和引用函数能起到很大的作用。在实际应用中,查找和引用函数会和其他类型的函数一起综合应用,完成复杂的查找或者定位。在本章中,将根据函数的性质,分为查找和引用函数两个小节详细讲解。 5.1 查找函数 查找函数的主要功能是快速的确定和定位所需要的信息。这类函数的主要功能是检索:根据实际需要,在工作表或者在多个工作薄中获取需要的信息或者数据。在本小节中,将详细讲解各个函数的功能。 5.1.1 ADDRESS函数:返回引用地址 【功能说明】该函数根据给定的行号和列号,返回某一个具体的单元格的地址。 【语法表达式】ADDRESS(row-num,column-num,abs-num,a1,sheet-text) 【参数说明】 z Row-num:代表行号,表示单元格在哪一行的数字。例如,单元格D2,就表示其在第2行。 z Column-num:代表列标号,表示单元格在哪一列的数字。例如,单元格D2,就表示其在D列。 z Abs-num:代表引用类型。使用函数时,其值可以是1、2、3、4中的任意一个值。 该参数也可以省略。如果省略该参数,系统将其默认为1。数字和其代表的引用 类型的关系,如表5.1所示。 表5.1 数字和代表类型 数字引用类型 1 代表绝对引用 2 代表绝对行号,相对列标 3 代表相对行号,绝对列标 4 代表相对引用 z A1:代表引用样式的逻辑值。如果参数a1为TRUE或者省略,那么函数将返回a1样式的引用;如果a1为FALSE,那么函数将返回R1C1样式的引用。 z Sheet-text:代表一文本,指定作为外部引用时的工作表名称。如果省略该参数,那么表示不使用任何工作表名。 【使用说明】如果参数a1是指定的四个数字之外的任意数字,函数都将返回错误值

查找函数的归纳

查找函数的通性 从区域或数组中行/列的相对位置序号或索引编号index_num最小值1开始找,找到第一个符合条件止 要找的值lookup_value可为常量或单元格引用 被找范围table_array(包括table_vector)可为单元格区域reference (包括行/列row_ column)或数组array (包括横向量/竖向量vector) 参数超限返回#V ALUE! ,引用超出范围返回#REF!,查找不成功返回#N/A (不可用) 字母不区分大小写 文本精准查找时可用通配符(?单个字符,*各种组合),问号或星号字符前缀波形符(~)则表示本身。 不精准查找需排序range,默认为升序查找方式match_type 各函数摘要 MATCH(lookup_value,lookup_array[,match_type]) 用降序-1、精准0(可不排序)或升序1(默认)方式在向量中找与值匹配的元素的位置。INDEX(array,[row_num]|[,column_num]) 返回由行和列索引编号(数组单行/列时相应可省;0表示所有)选定的数组中的元素值或向量。 INDEX(reference,[row_num],[column_num][,area_num]) 返回由行和列索引编号(同上。都省为整个)选定的指定区域(默认1)中的单元格或区域引用。**通过工具菜单用加载“查阅向导”宏创建“向导”-“查阅”公式(使用INDEX 和 MATCH 函数获取指定列和行标题交叉单元格的引用)。 OFFSET(reference,rows,cols,[height],[width]) 返回左上角(起始单元)为偏移后的、大小(默认与reference 相同)指定的区域的引用 **与下面各LOOKUP比,上二者结合由MATCH返回的位置序号可实现降序方式且返回引用的查找,OFFSET还可自由偏移位置 HLOOKUP(lookup_value,table_array,row_index_num[,range_lookup]) 用精准false或升序true(默认)方式在数组的首行找与值匹配的位置后获取指定行中同一位置的值。 VLOOKUP 垂直查找 **上二者取代了下二者 LOOKUP(lookup_value,lookup_vector,result_vector) 用升序在单行区域或单列区域(称为“向量”)中查找值,然后返回第二个向量中相同位置的值。 LOOKUP(lookup_value,array) 用升序在数组的第一行(范围宽时)或第一列(范围正或高时)中查找指定的值,然后返回数组的最后一行或最后一列中相同位置的值。 **对于详细的判断或七种以上条件的判断,还可以使用各LOOKUP 函数作为IF 函数的替代函数。

函数查询

函数查询

A a abs 绝对值、模、字符的ASCII码值acos 反余弦 acosh 反双曲余弦 acot 反余切 acoth 反双曲余切 acsc 反余割 acsch 反双曲余割 align 启动图形对象几何位置排列工具all 所有元素非零为真 angle 相角 ans 表达式计算结果的缺省变量名any 所有元素非全零为真 area 面域图 argnames 函数M文件宗量名 asec 反正割 asech 反双曲正割 asin 反正弦 asinh 反双曲正弦 assignin 向变量赋值 atan 反正切 atan2 四象限反正切 atanh 反双曲正切 autumn 红黄调秋色图阵 axes 创建轴对象的低层指令 axis 控制轴刻度和风格的高层指令 B b bar 二维直方图 bar3 三维直方图 bar3h 三维水平直方图 barh 二维水平直方图 base2dec X进制转换为十进制 bin2dec 二进制转换为十进制 blanks 创建空格串 bone 蓝色调黑白色图阵 box 框状坐标轴 break while 或for 环中断指令brighten 亮度控制 C c

capture (3版以前)捕获当前图形 cart2pol 直角坐标变为极或柱坐标 cart2sph 直角坐标变为球坐标 cat 串接成高维数组 caxis 色标尺刻度 cd 指定当前目录 cdedit 启动用户菜单、控件回调函数设计工具cdf2rdf 复数特征值对角阵转为实数块对角阵ceil 向正无穷取整 cell 创建元胞数组 cell2struct 元胞数组转换为构架数组 celldisp 显示元胞数组内容 cellplot 元胞数组内部结构图示 char 把数值、符号、内联类转换为字符对象 chi2cdf 分布累计概率函数 chi2inv 分布逆累计概率函数 chi2pdf 分布概率密度函数 chi2rnd 分布随机数发生器 chol Cholesky分解 clabel 等位线标识 cla 清除当前轴 class 获知对象类别或创建对象 clc 清除指令窗 clear 清除内存变量和函数 clf 清除图对象 clock 时钟 colorcube 三浓淡多彩交叉色图矩阵 colordef 设置色彩缺省值 colormap 色图 colspace 列空间的基 close 关闭指定窗口 colperm 列排序置换向量 comet 彗星状轨迹图 comet3 三维彗星轨迹图 compass 射线图 compose 求复合函数 cond (逆)条件数 condeig 计算特征值、特征向量同时给出条件数condest 范-1条件数估计 conj 复数共轭 contour 等位线 contourf 填色等位线 contour3 三维等位线

lookup函数的经典查找方式

主讲老师:卢子老师 讲座主题:解析lookup函数的经典查找方式 学习是需要技巧和经验的。感谢卢子老师为大家分享和交流他的实战经验。下面是本期讲座的全部内容。 本期讲座包括两部分内容:第一,lookup函数用法介绍;第二,通过实例讲解lookup 函数经典的条件查找解法,通用公式基本可以写为:LOOKUP(2,1/(条件),查找数组或区域)或LOOKUP(1,0/(条件),查找数组或区域)。 第一部分:lookup函数用法介绍 lookup函数和vlookup函数是excel中最常用的两个查找函数。vlookup函数能做到的lookup函数同样可以做到,而且可以做得更好。 LOOKUP函数有两种语法形式:向量和数组。本期就向量形式的展开交流和探讨。 向量形式的语法为:LOOKUP(lookup_value,lookup_vector,result_vector) 其中的参数意义如下: Lookup_value:为所要查找的数值。Lookup_value 可以为数字、文本、逻辑值或包含数值的名称或引用。 Lookup_vector:为只包含一行或一列的区域。Lookup_vector 的数值可以为文本、数字或逻辑值。Lookup_vector的数值必须按升序排序:...、-2、-1、0、1、2、...、A-Z、FALSE、TRUE,否则, LOOKUP不能返回正确的结果。文本不区分大小写。 Result_vector:只包含一行或一列的区域,其大小必须与 lookup_vector 相同。 比如lookup(A1,B1:B10,C2:C11),其中C2:C11的尺寸要与B1:B10相同,且如果A1对应B列中的位置是B2的话,那么返回的将是C3的值。 LOOKUP函数说明: 第一,如果函数 LOOKUP 找不到 lookup_value,则查找 lookup_vector 中小于或等于lookup_value 的最大数值。这就是为何返回最后一个满足条件的值的原理。 第二,如果 lookup_value 小于 lookup_vector 中的最小值,函数 LOOKUP 返回错误值 #N/A。 利用这个特性,我们可以用=LOOKUP(1,0/(条件),引用区域)这样一个通用公式来作查找引用。 第二部分:lookup函数实例运用 运用一:模糊查找

ANSYS查询函数大全

Here is just about everything I know about inquiry functions. They are similar to *GET functions in usage, and have two input arguments. Here's an example. a=ndinqr(33,1) In this case, "a" will be assigned a value of -1 if node 33 is unselected, 0 if it is undefined, and 1 if it is selected. This is an example of using an inquiry function to obtain information about a specific entity, in this case node 33. An alternative use of an inquiry function is to find more generic data about a certain kind of entities. The following example illustrates this. a=ndinqr(0,14) This will assign to parameter "a" the highest node number defined in the model. Notice that the first argument is zero, and the second argument is 14. Here are the inquiry functions I am aware of. ndinqr(node,key) node number or zero, and key number elmiqr(elem,key) kpinqr(keypoint,key) lsinqr(line,key) arinqr(area,key) vlinqr(volume,key) rlinqr(real,key) gapiqr(gap element,key) masiqr(master DOF,key) ceinqr(constraint equation,key) cpinqr(coupled set,key) csyiqr(coord system,key) etyiqr(element type,key) foriqr(nodal force,key) All of these work pretty much the same, with the first argument used as either an entity ID number (for data about a specific node, element, etc.) or a zero if the information is about a class of element (number of selected nodes, etc.) The key numbers are defined as follows. key=1 return select status (for a specific entity) key=12 return number of defined entities (KP's, nodes, etc.) key=13 return number of selected entities key=14 return the highest ID number in use

相关主题
相关文档
最新文档