草庐IT

Nil-coalescing

全部标签

ruby-on-rails-3 - 或者查询匹配 nil 或 ""与 Mongoid 仍然匹配 ""?

我正在尝试为嵌入式Mongoid::Document编写一个查询,它可以找到“地址”字段既不是nil也不是“”的任何记录。结合使用MongoDB文档,thisissueintheMongoidbugreports和Mongoid文档,我认为这样的事情应该可行:scope:with_address,where("$or"=>[{:address=>{"$ne"=>nil}},{:address=>{"$ne"=>""}}])当我运行它时,选择器看起来没问题:1.9.2p290:002>report.document.records.with_address=>#[{:address=>{

mongodb - Mongoid with Rails 4 - 无法连接到主节点... resolved_address=nil

我在本地安装了MongoDB,但在尝试在Rails4/Ruby1.9.3/Windows7上使用Mongoid/Moped时遇到此错误:"Couldnotconnecttoaprimarynodeforreplicaset#]>"可能是由resolved_address=nil引起的-其他论坛表示这是主机文件中的拼写错误-知道这个文件在Windows上的位置吗?应用仅包含一个简单的模型“文章”classArticleincludeMongoid::Documentfield:name,type:Stringfield:content,type:Stringend异常在Articles.

ruby-on-rails - Rails - Mongoid : newly added fields in model giving nil for old data objects

我有如下模型:classUserincludeMongoid::Documentfield:nameend将一些用户对象保存到数据库后,我添加了更多字段:classUserincludeMongoid::DocumentincludeMongoid::Timestamps::Createdfield:namefield:birthdateend现在,我希望我可以使用以下代码段:@user=User.all@user.eachdo|u|putsu.nameputsu.birthdate.strftime(#someFormat)putsu.created_at.strftime(#som

mysql - 在 MySQL SELECT 语句的 SUM 中使用 COALESCE

我有以下表格:Tableusersidnamebase_discount1jack102michael203richard30Tableitemidnamecategory_idprice1hammer1102knife2153spoon2124plate3205tree4400Tablecategoryidname1tools2kitchen3dishes4gardenTablediscount_categoryiduser_idcategory_iddiscount11120213253331041215Tablediscount_itemiduser_iditem_iddisco

MySQL group by with rollup, coalesce/ifnull, and date 函数

我遇到了MySQL的ROLLUP和处理结果NULL的问题。IFNULL/COALESCE函数与普通列一起使用效果很好,但在与日期函数一起使用时似乎会崩溃。示例如下:SELECTYEAR(date_time)ASYear,count(x)ASCountFROMmytableGROUPBYyearWITHROLLUP返回(如预期)YearCount---------2015320162NULL5当我查询非日期列(例如varchar)时,我可以通过使用IFNULL或COALESCE函数将NULL值替换为字符串来处理NULL值。但是,当我将相同的逻辑应用于上述查询时,它似乎不起作用。SELEC

mysql - SQL Server 中的 COALESCE 与 MySQL 中的 COALESCE

众所周知,COALESCE是一个ANSISQL标准函数。它在不同的RDBMS中具有相同的功能(即)它返回值列表中的第一个NOTNULL值。考虑以下数据设置CREATETABLETableA(customerIDvarchar(10),salaryint);INSERTINTOTableA(customerID,salary)VALUES('A1',100),('A2',200),('A3',300),('A4',400);CREATETABLETableB(customerIDvarchar(10),rateint);INSERTINTOTableB(customerID,rate)V

MySQL GROUP_CONCAT 与 COALESCE 关于 NULL 值

更新我刚刚注意到,在服务器中,table3.note列的值是NULL,而在我的本地机器上,它们是空字符串。在这个令人尴尬的发现之后,我进行了一些测试,结果在两个平台上一切都一样。如果我有两个单元格并且第二个单元格包含一个实际值(第一个是NULL),这就是它们产生的结果://1stGROUP_CONCAT(COALESCE(`table3`.`note`,'')SEPARATOR';')AS`table3_note`//var_dump():array(2){[0]=>string(0)""[1]=>string(4)"Test"}//2ndGROUP_CONCAT(`table3`.`

mysql - 这个简单的 COALESCE 选择查询有什么问题? (mysql)

我有这个问题:SELECTCOALESCE(CONCAT(Ar.usaf,'-',Ar.wban),"NONE")ASTABLE_NAMEFROM`metadata`.`ISH-HISTORY_HASPOS`AINNERJOIN`metadata`.`Artificial`ArON(Ar.id=A.mergeId)WHEREA.usaf=usafANDA.wban=wban;当没有连接发生并且结果为NULL时,我希望查询将空结果与“NONE”合并,但我仍然得到NULL。我如何才能返回“NONE”而不是NULL?我忽略了一个重点:usaf和wban是IN存储过程的变量。这是我的最终(工作

mysql - 未定义方法 `code' 为 nil :NilClass message with rails and a legacy database

我正在设置一个非常简单的Rails3应用程序来查看遗留MySQL数据库中的数据。遗留数据库主要是railsORM兼容的,除了外键字段是复数的。例如,我的“订单”表有一个指向“公司”表的外键字段,名为“companies_id”(而不是“company_id”)。所以很自然地,我不得不使用“belongs_to”的“:foreign_key”属性来手动设置字段名称。我已经有几年没有使用Rails了,但我很确定我做的一切都是正确的,但在尝试访问“order.currency.code”时出现以下错误:undefinedmethod`code'fornil:NilClass到目前为止,这是一

mysql - 在连接表列上优化 ORDER BY COALESCE

已编辑:按要求添加完整查询。本质上,我有一张帖子表,一对多地链接到一张转发表,类似于Twitter。我想加载按转发时间(如果存在)或原始帖子时间排序的帖子。但是,使用单个查询的排序过程非常慢(可能是因为COALESCE(x,y)没有充分利用MySQL索引)。两个相关表上的时间列都已编入索引。我的查询看起来像这样。SELECT*FROMPostpLEFTJOINp.repostsON...WHERE...ORDERBYCOALESCE(r.time,p.time)LIMIT0,10更准确地说(伪)因为我使用的是DAL:SELECT*FROMPostpLEFTJOINp.repostsre