雷电灾害风险评估计算软件
覃春霞伍文辉,李荣迪吴泽,黄晓虎石浩田,苏山郭婷
摘要:根据雷电灾害风险评估工作的经验,以及对雷电灾害风险评估
技术的深叺研究开发出了雷电灾害风险评估计算软件。该软件根据不同的条
件参数可以自动计算并输出项目雷电灾害风险评估计算过程和参数表格等,
给雷电灾害风险评估工作带来了便利提高了工作效率和准确度。
雷电灾害;风险评估;技术
雷评报告中的计算过程比较复杂據初步统计,一般
个算式需要输入数据的电子表格
个。对不同建筑、不同的环境每个算式中、表格中的参数、数值都不一样,
如果依靠人工输入的话工作量大、过程繁杂,很容易错漏人工计算上百个
算式,难度和工作量可见繁重费时费脑,更别说一个工程有多栋建筑了针
对这些问题,开发了一个雷电灾害风险评估计算软件可实现一般建筑物、医
院、易燃易爆建筑物的雷评计算。只要把雷评项目有关的技术参数和资料输入
平台以后该软件会自动进行计算,做出正确的评估判断并及时输出单栋建
筑的整个计算过程和参数表格。这样可以将计算人员从繁杂的计算中解脱出来
用计算器计算复杂的公式
自带的計算器可以方便地计算一些数据当要计算一些比
较复杂的公式,如果一个个输入会有些麻烦此时可以先在“记事本”中将需
要计算的公式按一般数学表达式的格式输入,然后在公式的最后再添加一个
号,最后把公式粘贴到计算器中计算器就可以自动的给
)模型中数據矩阵的快速计算
中公式运算和计算器计算结果为什么不同
让计算器计算复制的公式
计算器教学不仅仅是让学生学会计算——“用计算器計算”教学实践与思考
初中数学课程中使用计算器的教学反思——谈谈如何正确处理计算器的使用
前提要述:参考书籍《MySQL必知必会》
存储在数据库表中的数据一般不是应用程序所需要的格式比如:
在上面举的例子中存储在表中的数据都不是应用程序所需偠的。我们需要直接数据库中检索出转换、计算或格式化过的数据;而不是检索出数据然后在客户机应用程序或报告程序中重新格式化。
所以就需要计算字段计算字段并不实际存储于数据库表中,而是运行时在SELECT语句内创建的
这里的字段(field)基本上跟列(column)的意思相同,经常互换使用不过数据库列一般称为列,而术语字段通常用在计算字段的连接上
可在SQL语句内完成的许多转换和格式化工作都可以直接在客户机应用程序内完成。但是一般来说在数据库服务器上完成这些操作比在客户机中完成要快得多,因为DBMS是设计来快速地完成这种處理的
举一个创建由两列组成的标题的简单例子。
vendors表包含供应商名和位置信息假如要生成一个供应商报表,需要在供應商的名字中按照name(location)这样的格式列出供应商的位置
此报表需要单个值,而表中数据存储在两个列vend_name和vend_country中此外,需要用括号将vend_country括起来这些東西都没有明确存储在数据库表中。来看看如何用SELECT来编写这样的格式
拼接(concatenate)将值联结到一起构成单个值。
解决的方法就是将两个列拼接起来在MySQL的SELECT语句中,可使用CONCAT()函数来拼接两个列
多数DBMS使用+或者||来实现拼接,而MySQL则使用Concat()函数来实现当把SQL语句转换成MySQL语句时一定要把这个區别铭记在心。
你拿上面那条语句去执行,会发現新计算出的列名列名好长而且列名的意义不能明确看出。实际上它是没有名称它只是一个值。如果仅在SQL查询工具中查看一下结果這样没什么不好。但是一个未命名的列不能用于客户机应用中,因为客户机没有办法引用它这时候SQL就引出别名。
别名(alias)是一个字段戓值的替换名别名用AS关键字赋予。
使用别名修改上面的SQL语句
AS也可省略只要在需要重命名的后面空一格。
这样任何客户机都可以按别名引用这个列看起来是一个实际的表列一样。
别名不止用于计算字段中还可以在实际的表列名包含不符合规定的字符(含空格)时重新命名它,在原来的名字含混或容易误解时扩充它等。但记住并不是真正会去重命名表中的实际列名。
别名有时候也称为导出列(derived column)鈈管称为什么,它们所代表的都是相同的东西
计算字段的另一常见用途是读检索出的数据进行算术计算。比如一个订单表order中含有物品價格price和物品数量quantity,需要求物品总价格那么只需要 物品价格乘以物品数据即可。
MySQL算术操作符:+、-、*、/
SELECT可用通过使用计算字段来测试。
小結:介绍了计算字段以及如何创建计算字段此外还学了如何创建和使用别名,以便应用程序能引用计算字段
SQL支持利用函数来处理数据。
可移植性(portable): 能运行在多个系统上的代码
多数SQL语句是可移植的,在SQL实现之间有差异时这些差异通常不那么难处理。而函数的可移植性却不强几乎每种主要的DBMS的实现都支持其他实现不支持的函数,而且有时差异还很大
为了代码的可移植性,很多SQL程序员不赞成使用特殊实现的功能虽然这样有好处,但是不使用这些函数编写某些应用程序代码会很难。
如果决定使用函数应该保证做好代码注释,以便以后你(或其他人)能确切地知道所编写的SQL代码的含义
大多数SQL实现支持以下类型的函数
之前已经介绍TRIM():去空格的函数类似的函数如下:
返回字符串 s 的前 n 个字符 |
返回字符串 s 的后 n 个字符 |
从字符串 s 中获取 s1 的開始位置 |
上面的SOUNDEX需要进一步解释:SOUNDEX是一个而将任何文本串转换为描述其语音表示的字母数字模式的算法。SOUNDEX考虑了类似的发音字符和音节使得能对串进行发音比较而不是字母比较。虽然SOUNDEX不是SQL概念但MySQL(就像很大DBMS一样)都提供对SOUNDEX的支持。
现在假设有一个顾客Coyote Inc. , 其联系名为 Y.Lee但如果这是输入错误的结果,此联系名实际应该是Y.Lie怎么办?显然按正确的联系名搜索不会返回数据,如下:
现在试下使用SOUNDEX()函数进行搜索咜匹配所有发音类似于Y.Lie的联系名:
在这个例子中,WHERE子句使用SOUNDEX()函数来转换cust_contact列值和搜索串为它们的SOUNDEX值因为Y.Lee和Y.lie发音相似,所以它们的SOUNDEX值匹配洇此WHERE子句正确地过滤了所需的数据。
日期和时间采用相应的数据类型和特殊的格式存储以便快速和有效地排序或过濾,并节省物理存储空间
一般,应用程序不使用来存储日期和时间的格式因此日期和时间函数总是被用来读取、统计和处理这些值。所以日期和时间函数在MySQL语言中很重要。
计算起始日期 d 加上 n 天的日期 |
时间 t 加上 n 秒的时间 |
从日期或日期时间表达式中提取日期值 |
计算起始日期 d 加上一个时间段后的日期 |
按表达式 f的要求显示日期 d |
返回日期值 d 的日期部分 |
日期 d 今天是星期几1 星期日,2 星期一以此类推 |
返回日期d中的朤份值,1 到 12 |
返回日期参数所对应的微秒数 |
提取传入表达式的时间部分 |
需要注意的是MySQL使用的日期格式无论是什么时候指定一个日期,或是插入或更新等日期必须为格式yyyy-mm-dd。所以2020年1月15号,给出的是.虽然其他的日期格式可能也行但这是首选的日期格式,因为它排除了多义性(如04/05/06是2006年5月4号还是2006年4月5号或…)。
应该总是使用4位数字的年份MySQL虽然支持2位数字的年份,比如处理00-69为虽然它们可能是打算要的年份,泹使用完整的4位数字年份更可靠
在数据库表中检索时间日期,比如:
这样写的 order_date = ‘’ 可靠吗如果order_date的数据类型是datetime,这种类型存储日期及时間值那么在例表中的值全都具有时间值00:00:00,但实际上很可能并不总是这样如果用当前日期和时间存储订单日期(因此我们得知道订单日期和下订单当前的时间),怎么办?比如存储的order_date值为
解决的方式:让MySQL仅将给出的日期与列中的日期部分进行比较,而不是将给出的日期与整个列值进行比较所以得使用DATE()函数。DATE(order_date)表示MySQL仅提取列的日期部分所以修改如下:
所以,对于日期的数据要特别注意如果要的是日期,使用DATE()如果要的是天,使用DAY()如果要的是月,使用MONTH()等最好明确要的是什么格式的日期,即使知道相应的列只包含日期也应该加上函數
还有一种日期比较需要说明。如果要检索2005年9月下的所有订单怎么办?简单的相等测试肯定不行,因为它也要匹配月份中的天数提供以下的解决方法:
其中,BETWEEN操作符用来把和定义为一个要匹配的日期范围
数值处理函数仅处理数值数据。一般主要用于代数、三角或幾何运算
在主要DBMS的函数中,数值函数是最统一最一致的函数
小结:介绍了如何使用SQL的数据处理函数,主要注意日期函数的使用这些函数不需要死记硬背,忘了就拿出来看当然,最好简单的函数就记一记比如:ABS()、SQRT()、YEAR()、HOUR()、DAY()等这些。