GVKun编程网logo

不得进行零 SQL 除法,不得影响其他计算(不得进行零 sql 除法,不得影响其他计算吗)

10

对于想了解不得进行零SQL除法,不得影响其他计算的读者,本文将提供新的信息,我们将详细介绍不得进行零sql除法,不得影响其他计算吗,并且为您提供关于.gitignore过滤当前目录下的文件夹,不影响其

对于想了解不得进行零 SQL 除法,不得影响其他计算的读者,本文将提供新的信息,我们将详细介绍不得进行零 sql 除法,不得影响其他计算吗,并且为您提供关于.gitignore过滤当前目录下的文件夹,不影响其他目录、8 个不得不说的 MySQL 陷阱、8个不得不说的MySQL陷阱、IT大牛说的话,不得不记的有价值信息。

本文目录一览:

不得进行零 SQL 除法,不得影响其他计算(不得进行零 sql 除法,不得影响其他计算吗)

不得进行零 SQL 除法,不得影响其他计算(不得进行零 sql 除法,不得影响其他计算吗)

如何解决不得进行零 SQL 除法,不得影响其他计算?

我正在尝试在 sql Server 中创建一个表值函数,用于计算 2 个数字之间的任何数学运算。除以零必须返回警告并且不能进行计算。我注意到系统有一条消息“遇到除以零错误”,但它会影响其他计算(加法、减法、乘法)。

所以这是我的代码,因为除法错误,所以它的版本为 NULL,所以它不会搞砸。

SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO

CREATE OR ALTER FUNCTION get_math
(
    @p1 decimal,@p2 decimal
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT @p1 + @p2 AS ''add'',@p1 - @p2 AS ''substract'',@p1 * @p2 AS ''multiply'',CASE 
        WHEN @p2 = 0
        THEN null
        ELSE  CONVERT(DECIMAL(10,2),(@p1/@p2))
    END AS ''divide''     
)
GO

results from the code for p1 = 15 and p2= 5

我希望当第二个参数为零时,只停止除法并在第 4 列(除法)中显示警告消息。其他计算应该没有任何问题。 有人可以给我一个想法吗?

解决方法

你不能完全按照你的要求去做,因为那会混合数据类型,表中返回的每一列都必须一致,所以如果第 4 列返回小数,在某些情况下你不能,而是返回一个细绳。您需要在第 5 列中显示警告。

    DECLARE @p1 decimal = 0,@p2 decimal = 0;

    SELECT
        @p1 + @p2 add,@p1 - @p2 substract,@p1 * @p2 multiply,CASE 
            WHEN @p2 = 0
            THEN null
            ELSE CONVERT(DECIMAL(10,2),(@p1/@p2))
        END AS divide,CASE 
            WHEN @p2 = 0
            THEN ''Cannot divide by zero''
            ELSE null
        END AS divideError

.gitignore过滤当前目录下的文件夹,不影响其他目录

.gitignore过滤当前目录下的文件夹,不影响其他目录

最近在使用git时遇到一个问题, push到远程机器上时某个log文件夹丢失了,本地查找是有的,git status也显示clean:

$ git status
On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

于是猜测可能是被.gitignore过滤了,打开之后果然,里面有一行:

log/

这一行本来是用来过滤当前目录的的log文件夹,结果其他地方的log文件夹也被过滤了,解决: 指明当前文件夹,改为:

/log

此时在git status就发现那个我想加入git的log文件夹出现了

$ git status
On branch master
Your branch is up to date with 'origin/master'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git checkout -- <file>..." to discard changes in working directory)

        modified:   .gitignore

Untracked files:
  (use "git add <file>..." to include in what will be committed)

        src/main/java/sysu/newchain/consensus/pbft/msg/log/

no changes added to commit (use "git add" and/or "git commit -a")

8 个不得不说的 MySQL 陷阱

8 个不得不说的 MySQL 陷阱

Mysql安装简单,速度较快,功能丰富。另外它还是开源运动的标杆,它的伟大成就向我们展示了一个成功的公司是可以建立在开源代码之上的。

然而用过mysql的人都曾对着显示器挥舞过拳头。但你不可能发明一种每秒能保存成千上万行互联网数据,并且一点错误都没有的技术吧。

为了在这个夏天躁起来,我们列举了8个抱怨开源关系型数据库的理由。下面列举的理由中不仅限于 MySQL,有一些是针对关系型数据库的。如果我们没有理清楚关系型数据库和 MySQL,我们将会永远陷入90年代的思想上。我们需要推倒然后重建这些。或者我们转向使用一个最近流行的,存在时间没有长到可以列出一堆像下面一样的理由的数据库。

根深蒂固的bugs

任何大的软件包都有 bug。但稍微深入了解一下,就会发现和 Mysql 相关的 bugs 自成体系。突然你就需要留心,因为 NULL 并不是以同样的方式出现,外键约束也没有像你想像的那样执行,连主键自动增长也会出错。

小问题大量存在,而且并不总是可以修复,这就是为什么一些人保持一个列表。还好 MySQL 维护着一人非常好的 bug 报告系统,让我们可以知道我些我们无法想像的事情,知道其他人也在经受同样的磨难。

关系表的不灵活性

关系表具有条理性,条理性是好的——但是,它使得程序员不得不编造或硬塞一些数据到已经定义好模式的列中。NoSQL开始越来越受到欢迎的原因之一,就是它为程序员提供了足够的灵活性,来加速数据库的使用。如果一个街道地址需要增加一行,那么,你可以将它很容易地插入到一个NoSQL文档中。如果你想添加一个完整的新的数据块,无论它包含什么内容,文档模型也可以原封不动地接受你的数据,而不必改为它要求的数据格式。

试想一下,你用整数格式建立了一个全部是邮编的表格。这个表是十分高效的,它执行的规则也很好。突然一次,有人上传了一个使用了连字符的九位数邮编。或者还有可能,你得到了一位来自加拿大客户的信件,上面写有邮政编码。

这时,一切都乱了。老板要求网站要在几小时内恢复正常工作。然而,现在已经没有时间来重建数据库。程序员可以做什么?也许,可以使用黑客手段把加拿大邮政编码由base64的数字格式改为base 10格式?或者设置一个使用转义编码的辅助表格,用来说明真正的邮政编码或者其他?谁知道呢?到处都有黑客,他们都是危险的。但你没有时间来搞定它。

MySQL的关联规则让每个人都诚实和谨慎,但它能强制我们避开易受攻击和欺骗的麻烦。

JOIN联合查询

曾几何时,将数据分表保存是计算机科学史上的伟大创新。分开后的表不仅结构简单,也简化了使用。但它却需要使用join语句进行查询。

sql通过一系列join构建的复杂查询将开发者推入了困惑与绝望的深渊。而且存储引擎也需要以最优的方式来高效地解析join语句。开发者需要绞尽脑汁编写查询语句,然后数据库对其进行解析。

这就是很多注重运行速度的开发者放弃数据分表转而使用不规范数据表的原因。不区分数据实体,将所有数据保存到一个大表中——以避免复杂的查询。这样确实很快,并且服务器也不会耗尽内存。

磁盘空间现在很廉价。8TB的磁盘已经在售,更大的也要上市了。我们不再需要为使用join而绞尽脑汁了。

分支的混乱

是的,一个可靠的、得到良好支持的MySQL分支,可以带来竞争和选择,但是它也引起困惑和混乱。更糟糕的是,一个称为MariaDB的MySQL分支,由Monty Widenius维护着。他同样也在参与编写MySQL。那么,MariaDB是真正独立的值得我们拥护的吗?或者它是MySQL?我们是否应该坚持使用由创建原始MySQL数据库的组织运营的核心代码?或者我们应该加入那些被认为更聪明的,往往很酷的背叛者?

还有,我们应当如何获得关于兼容性的信息?一方面,我们被确信MariaDB和MySQL十分地相似。另一方面,我们要相信有差异——不然为什么大家都在争论它?也许它们在性能和我们查询的范围内,在两个阵营中工作方式相同?但也许他们不同-或者将来会不同。

存储引擎混乱

MySQL不是事实上的同一的数据库;它由几个数据库组成,它们的大多数细节都被统一的表面所掩盖。在开始的时候,有一个MyISAM引擎,它很快但是在前后一致上不能做到完备。有时候你需要速度并且可以接受不一致的结果时是很好的。

当人们需要更多时,具备完整事务支持的InnoDB出现了。但这还不够。现在,它可能有20种存储引擎的选择——这足以使一个数据库管理员疯狂。当然,有些时候在不同的存储引擎之间切换而不必重写你的SQL是很好的,但是切换后总会带来混乱。这个表格我选择的引擎是 MyISAM 还是 innoDB 呢?或者,我决定输出的数据是CSV格式的吗?

盈利的动机

虽然 MySQL 是一款成功的开源产品,但它仍然是一门生意,里面满是靠它获得薪水的专业开发者。当大多数用户在持续地享受开源许可证带来的最佳体验时,毫无疑问这家公司还在为赚取足够的钱来维持运营而努力。这导致自由代码在“社区版”和出售给企业的完整产品之间产生了奇怪的分岐。

你应该付钱吗?你在这里挣到了多少钱?在社区版之上开展经营行为是否公平?企业版中额外的功能,是否只是一个噱头来引诱我们不断付费呢?这至少说明一点,它是另一组需要回答的问题。选用哪个版本?遵照哪种许可证?选用它的哪个功能集?

原生 JSON 支持的缺乏

看 MySQL 的年龄最好的办法是安装它,然后你会意识到需要添加更多的驱动程序使它可用。MySQL 通常在 3306 端口上通信,它一般输出的是它自己难以理解的格式化数据。如果你想让你的代码和它通信,你必须添加另一层的代码,将 MySQL 的语言转换成有用的东西。这些层的代码,以库的形式分发,经常需要人们购买一个商业的许可证。

现代数据存储层通常直接以 JSON 通信。虽然 MySQL 和 MariaDB 现在有能力解析 SQL 中的 JSON 部分,但这还远远不够好,原生的 JSON 接口已经在 CouchDB,MongoDB,或任何最新的工具中广泛使用。

封闭源和专有模块的兴起

我说过 MySQL 是开源的吗?它是,但除了一些在”开源核心“周边开发的一些较新的、非开源的代码、专有模块。程序员需要吃饭,Oracle需要拿它的辛苦成果来换钱,这是商业的现实之一。它不像那些医院,使用 MySQL 可以免费医疗护理。它不象那些农民,使用 MySQL 可以赠送食物。

要求 MySQL 始终坚持在一个很高的标准是有点不公平的,因为开源的成功可能是一个圈套。这是因为它开始可以免费,但并不意味着它可以始终如此。如果企业需要许多新的功能,他们将不得不用这种或那种方式付费。有时向 Oracle 付费,比自己来编写代码要便宜得多。有时商业的、不开源的代码是有意义的。事实不言而喻。

以上就是8 个不得不说的 mysql 陷阱的内容,更多相关内容请关注php中文网(www.php.cn)!


8个不得不说的MySQL陷阱

8个不得不说的MySQL陷阱

  MysqL安装简单,速度较快,功能丰富。另外它还是开源运动的标杆,它的伟大成就向我们展示了一个成功的公司是可以建立在开源代码之上的。

  然而用过MysqL的人都曾对着显示器挥舞过拳头。但你不可能发明一种每秒能保存成千上万行互联网数据,并且一点错误都没有的技术吧。

  为了在这个夏天躁起来,我们列举了8个抱怨开源关系型数据库的理由。下面列举的理由中不仅限于 MysqL,有一些是针对关系型数据库的。如果我们没有理清楚关系型数据库和 MysqL,我们将会永远陷入90年代的思想上。我们需要推倒然后重建这些。或者我们转向使用一个最近流行的,存在时间没有长到可以列出一堆像下面一样的理由的数据库。

  根深蒂固的bugs

  任何大的软件包都有 bug。但稍微深入了解一下,就会发现和 MysqL 相关的 bugs 自成体系。突然你就需要留心,因为 NULL 并不是以同样的方式出现,外键约束也没有像你想像的那样执行,连主键自动增长也会出错。

  小问题大量存在,而且并不总是可以修复,这就是为什么一些人保持一个列表。还好 MysqL 维护着一人非常好的 bug 报告系统,让我们可以知道我些我们无法想像的事情,知道其他人也在经受同样的磨难。

  关系表的不灵活性

  关系表具有条理性,条理性是好的——但是,它使得程序员不得不编造或硬塞一些数据到已经定义好模式的列中。Nosql开始越来越受到欢迎的原因之一,就是它为程序员提供了足够的灵活性,来加速数据库的使用。如果一个街道地址需要增加一行,那么,你可以将它很容易地插入到一个Nosql文档中。如果你想添加一个完整的新的数据块,无论它包含什么内容,文档模型也可以原封不动地接受你的数据,而不必改为它要求的数据格式。

  试想一下,你用整数格式建立了一个全部是邮编的表格。这个表是十分高效的,它执行的规则也很好。突然一次,有人上传了一个使用了连字符的九位数邮编。或者还有可能,你得到了一位来自加拿大客户的信件,上面写有邮政编码。

  这时,一切都乱了。老板要求网站要在几小时内恢复正常工作。然而,现在已经没有时间来重建数据库。程序员可以做什么?也许,可以使用黑客手段把加拿大邮政编码由base64的数字格式改为base 10格式?或者设置一个使用转义编码的辅助表格,用来说明真正的邮政编码或者其他?谁知道呢?到处都有黑客,他们都是危险的。但你没有时间来搞定它。

  MysqL的关联规则让每个人都诚实和谨慎,但它能强制我们避开易受攻击和欺骗的麻烦。

  JOIN联合查询

  曾几何时,将数据分表保存是计算机科学史上的伟大创新。分开后的表不仅结构简单,也简化了使用。但它却需要使用join语句进行查询。

  sql通过一系列join构建的复杂查询将开发者推入了困惑与绝望的深渊。而且存储引擎也需要以最优的方式来高效地解析join语句。开发者需要绞尽脑汁编写查询语句,然后数据库对其进行解析。

  这就是很多注重运行速度的开发者放弃数据分表转而使用不规范数据表的原因。不区分数据实体,将所有数据保存到一个大表中——以避免复杂的查询。这样确实很快,并且服务器也不会耗尽内存。

  磁盘空间现在很廉价。8TB的磁盘已经在售,更大的也要上市了。我们不再需要为使用join而绞尽脑汁了。

  分支的混乱

  是的,一个可靠的、得到良好支持的MysqL分支,可以带来竞争和选择,但是它也引起困惑和混乱。更糟糕的是,一个称为MariaDB的Mysql分支,由Monty Widenius维护着。他同样也在参与编写MysqL。那么,MariaDB是真正独立的值得我们拥护的吗?或者它是MysqL?我们是否应该坚持使用由创建原始MysqL数据库的组织运营的核心代码?或者我们应该加入那些被认为更聪明的,往往很酷的背叛者?

  还有,我们应当如何获得关于兼容性的信息?一方面,我们被确信MariaDB和MysqL十分地相似。另一方面,我们要相信有差异——不然为什么大家都在争论它?也许它们在性能和我们查询的范围内,在两个阵营中工作方式相同?但也许他们不同-或者将来会不同。

  存储引擎混乱

  MysqL不是事实上的同一的数据库;它由几个数据库组成,它们的大多数细节都被统一的表面所掩盖。在开始的时候,有一个MyISAM引擎,它很快但是在前后一致上不能做到完备。有时候你需要速度并且可以接受不一致的结果时是很好的。

  当人们需要更多时,具备完整事务支持的InnoDB出现了。但这还不够。现在,它可能有20种存储引擎的选择——这足以使一个数据库管理员疯狂。当然,有些时候在不同的存储引擎之间切换而不必重写你的sql是很好的,但是切换后总会带来混乱。这个表格我选择的引擎是 MyISAM 还是 innoDB 呢?或者,我决定输出的数据是CSV格式的吗?

  盈利的动机

  虽然 MysqL 是一款成功的开源产品,但它仍然是一门生意,里面满是靠它获得薪水的专业开发者。当大多数用户在持续地享受开源许可证带来的最佳体验时,毫无疑问这家公司还在为赚取足够的钱来维持运营而努力。这导致自由代码在“社区版”和出售给企业的完整产品之间产生了奇怪的分岐。

  你应该付钱吗?你在这里挣到了多少钱?在社区版之上开展经营行为是否公平?企业版中额外的功能,是否只是一个噱头来引诱我们不断付费呢?这至少说明一点,它是另一组需要回答的问题。选用哪个版本?遵照哪种许可证?选用它的哪个功能集?

  原生 JSON 支持的缺乏

  看 MysqL 的年龄最好的办法是安装它,然后你会意识到需要添加更多的驱动程序使它可用。MysqL 通常在 3306 端口上通信,它一般输出的是它自己难以理解的格式化数据。如果你想让你的代码和它通信,你必须添加另一层的代码,将 MysqL 的语言转换成有用的东西。这些层的代码,以库的形式分发,经常需要人们购买一个商业的许可证。

  现代数据存储层通常直接以 JSON 通信。虽然 MysqL 和 MariaDB 现在有能力解析 sql 中的 JSON 部分,但这还远远不够好,原生的 JSON 接口已经在 CouchDB,MongoDB,或任何最新的工具中广泛使用。

  封闭源和专有模块的兴起

  我说过 MysqL 是开源的吗?它是,但除了一些在”开源核心“周边开发的一些较新的、非开源的代码、专有模块。程序员需要吃饭,Oracle需要拿它的辛苦成果来换钱,这是商业的现实之一。它不像那些医院,使用 MysqL 可以免费医疗护理。它不象那些农民,使用 MysqL 可以赠送食物。

  要求 MysqL 始终坚持在一个很高的标准是有点不公平的,因为开源的成功可能是一个圈套。这是因为它开始可以免费,但并不意味着它可以始终如此。如果企业需要许多新的功能,他们将不得不用这种或那种方式付费。有时向 Oracle 付费,比自己来编写代码要便宜得多。有时商业的、不开源的代码是有意义的。事实不言而喻。

  原文地址:http://www.pcadvisor.co.uk/news/software/8-mysql-gotchas-worth-a-rant-3620577/

IT大牛说的话,不得不记

IT大牛说的话,不得不记

     编程经典语录收集

 

01. Walking on water and developing software from a specification are easy if both are frozen. – Edward V Berard

在水中行走,和根据一份需求开发软件一样,如果它们都“冻”住了,那就容易了。—— 爱德华·贝拉尔德


02. “Sometimes it pays to stay in bed on Monday,rather than spending the rest of the week debugging Monday’s code.” – Christopher Thompson

有的时候宁愿付钱让你周一在床上待着,也不想让你用这周剩下的时间去调试你在周一所写的代码。 —— 丹·所罗门


03. “Most of you are familiar with the virtues of a programmer. There are three,of course: laziness,impatience,and hubris.” – Larry Wall

你们大部分人都熟悉程序员的美德。当然了,是这三种:懒惰、急躁、傲慢。—— 拉里·沃尔 (Perl 语言之父)



04. Programming today is a race between software engineers striving to build bigger and better idiot-proof programs,and the Universe trying to produce bigger and better idiots. So far,the Universe is winning. – Rick Cook

今日之编程,已是竭力要建立更大更反白痴程序的软件工程师,和正塑造更大更优质白痴的现实世界之间的比赛。目前来看,现实世界赢了。—— Rick Cook


05. “The trouble with programmers is that you can never tell what a programmer is doing until it’s too late.” – Seymour Cray

程序员的问题是,你无法知道他在做什么,直到为时已晚。—— 西摩·克雷

 

06. “Always code as if the guy who ends up maintaining your code will be a violent psychopath who kNows where you live.” – Martin Golding

在编写代码的时候,你要经常想着,那个最终维护你代码的人可能将是一个有暴力倾向的疯子,并且他还知道你住在哪里。—— 里克·奥斯本

补充:关于这条语录,StackOverflow 上也有个讨论帖,给出的答案可能是John Woods。


07. Measuring programming progress by lines of code is like measuring aircraft building progress by weight. – Bill Gates

用代码行数来衡量程序的开发进度,就好比用重量来衡量飞机的制造进度。—— 比尔·盖茨


08. “There are two ways of constructing a software design. One way is to make it so simple that there are obvIoUsly no deficiencies. And the other way is to make it so complicated that there are no obvIoUs deficiencies.”- C.A.R. Hoare

设计软件有两种方法:一种是简单到明显没有缺陷,另一种复杂到缺陷不那么明显。—— 托尼·霍尔



09. The first 90% of the code accounts for the first 90% of the development time. The remaining 10% of the code accounts for the other 90% of the development time. – Tom Cargill

软件开发的时间通常是这样的:一开始的90%开发工作用掉了整个计划90%的时间,剩下的10%同样需要整个计划90%的时间,而最终发布前的修改也是如此。—— N.J. Rubenking

Writing the first 90 percent of a computer program takes 90 percent of the time.  The remaining ten percent also takes 90 percent of the time and the final touches also take 90 percent of the time. ~N.J. Rubenking

 


10. If debugging is the process of removing software bugs,then programming must be the process of putting them in. – Edsger Dijkstra

如果调试程序是移除臭虫(软件缺陷)的过程,那编写程序就是把臭虫放进来的过程。—— 迪杰斯特拉

关于不得进行零 SQL 除法,不得影响其他计算不得进行零 sql 除法,不得影响其他计算吗的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于.gitignore过滤当前目录下的文件夹,不影响其他目录、8 个不得不说的 MySQL 陷阱、8个不得不说的MySQL陷阱、IT大牛说的话,不得不记等相关内容,可以在本站寻找。

本文标签: