小编reg*_*lus的帖子

从同一个表中的多个列中选择不同的值

我正在尝试构造一个SQL语句,该语句从位于同一个表中的多个列返回唯一的非空值.

 SELECT distinct tbl_data.code_1 FROM tbl_data
      WHERE tbl_data.code_1 is not null
 UNION
 SELECT tbl_data.code_2 FROM tbl_data
      WHERE tbl_data.code_2 is not null;
Run Code Online (Sandbox Code Playgroud)

例如,tbl_data如下:

 id   code_1    code_2
 ---  --------  ----------
 1    AB        BC
 2    BC        
 3    DE        EF
 4              BC
Run Code Online (Sandbox Code Playgroud)

对于上表,SQL查询应返回两列中的所有唯一非空值,即:AB,BC,DE,EF.

我对SQL很新.我上面的声明有效,但有没有更简洁的方法来编写这个SQL语句,因为这些列来自同一个表?

sql union distinct

22
推荐指数
2
解决办法
7万
查看次数

使用RegEx和Replace在MS-Access中使用USPS缩写更新地址字段

我正在尝试在Access中编写VBA函数,用标准的美国邮政缩写替换地址字段中的单词.我意识到这永远不会是完美的,但我想至少制作简单的缩写(无需购买地址格式化软件),例如

 input      output
 -------    -------------
 North   -> N
 Street  -> ST
 Drive   -> DR
 Lane    -> LN
Run Code Online (Sandbox Code Playgroud)

我想过使用一个简单的表来存储字符串和替换字符串,然后循环遍历该表/记录集以执行简单的搜索并使用该Replace()函数替换,例如使用immediate window:

 ?Replace("123 North 3rd St", "North", "N", compare:=vbTextCompare)
 123 N 3rd St
Run Code Online (Sandbox Code Playgroud)

但是,这种方法可能会导致错误,例如

 ?Replace("123 Northampton St", "North", "N", compare:=vbTextCompare)
 123 Nampton St
Run Code Online (Sandbox Code Playgroud)

我最初的策略是使用正则表达式模式和替换字符串创建替换表,然后遍历该表以进行更精确的搜索和替换.

pattern                 abbrev
-------------------     ------------
{pattern for North}     N
{pattern for Street}    ST
Run Code Online (Sandbox Code Playgroud)

我意识到RegEx在这里可能有些过分,特别是因为我将在数据库中反复遍历地址字段,但是想到使用该Replace()函数时更容易想到更新(更新:请参阅@ mwolfe02和@Cylian,以及混合解决方案).

在上面的示例中,我想搜索单词North和Street,它们或者作为字符串中的单词存在(因此由两个空格分隔)或者在字符串的末尾或字符串的开头.这涵盖了大多数需要缩写的情况.例如

address                       formatted
----------------------        --------------------------
123 North 3rd …
Run Code Online (Sandbox Code Playgroud)

regex ms-access vba

6
推荐指数
2
解决办法
2944
查看次数

用于多个字段的定制Ruby CSV转换器

我正在导入一个CSV文件,其中包含需要转换的字段,如下所示:

  • “ True”(字符串)-> true(布尔值)
  • “假”(字符串)->假(布尔值)
  • “%m /%d /%Y”(字符串格式)->日期对象
  • “%m /%d /%Y%I:%M:%S%p”(字符串格式)-> DateTime对象

默认的CSV转换器与Date和DateTime字段不匹配。下面的这种方法似乎可行,但是想知道是否有更好的方法,可能是通过覆盖转换器使用的匹配模式?

 require 'csv'
 require 'date'

 src = <<csv
 active,date_created,date_modified
 "True","03/12/2012","03/12/2012 2:14:23 PM"
 "False","01/25/2011","03/12/2013 3:14:27 AM"
 csv

 CSV::Converters[:my_converters] = lambda{|field| 
   begin 
     case field.to_s
       when "True"
         true
       when "False"
         false
       when /^\d{2}\/\d{2}\/\d{4}$/
         Date.strptime(field,"%m/%d/%Y")
       else
         DateTime.strptime(field,"%m/%d/%Y %I:%M:%S %p")
       end
   rescue ArgumentError
     field
   end
 }

 csv = CSV(src, :headers => true, :converters => [:my_converters])
 csv.each{|row| puts row}
Run Code Online (Sandbox Code Playgroud)

真实,2012-03-12,2012-03-12T14:14:23 + 00:00

假,2011-01-25,2013-03-12T03:14:27 + 00:00

ruby csv fastercsv

5
推荐指数
2
解决办法
1215
查看次数

CDate类型不匹配错误

我正在尝试使用记录集中的CDate()将文本字段转换为日期,但不断出现类型不匹配错误.输入文本格式为MMDDYYYY.CDate不承认这种格式吗?我需要一个单独的功能吗?有任何想法吗?

Text Date  -> Converted Date
---------     --------------
04122012   -> 04/12/2012


Dim db As DAO.Database
Dim rst As DAO.Recordset

Set db = CurrentDb
Set rst = db.OpenRecordset("tbl_dates", Type:=dbOpenDynaset)

Do Until rst.EOF
rst.Edit
rst![Converted Date]=CDate(rst![Text Date])
rst.Update
rst.MoveNext

Loop

Set rst = Nothing
Set db = Nothing
Run Code Online (Sandbox Code Playgroud)

ms-access vba

4
推荐指数
2
解决办法
2万
查看次数

使用 Ruby 注入计算嵌套总和

我正在尝试使用 Ruby 的注入来对表示有限连分数的数组求和,其中

[a, b, c, d, e, ... , x] = a + 1/(b + 1/(c + 1/(d + 1/(e + ... 1/x)...)))
Run Code Online (Sandbox Code Playgroud)

我不知道如何获得正确的嵌套评估以使用注入返回正确的值。

相反,我所写的只是返回各项的统一总和,而不是嵌套总和。例如,

[a, b, c, d, e, ... , x] = a + 1/(b + 1/(c + 1/(d + 1/(e + ... 1/x)...)))
Run Code Online (Sandbox Code Playgroud)

也就是说, 0 + 1/2 + 1/1 + 1/12 + 1/8 #=> 41/24 而不是 0 + 1/(2 + 1/(1 + 1/(12+1/8))) #=> 105/307,这是正确的值。

是否可以使用注入方法计算这种类型的总和?

如果不是,我怎样才能正确计算它?

ruby inject

4
推荐指数
1
解决办法
109
查看次数

将基本Access查询条件表示为正则表达式

我熟悉Access的查询和过滤条件,但我不确定如何表达类似于正则表达式模式的语句.我想知道是否有人可以帮助将它们与我理解的一些简单例子联系起来.

如果我使用正则表达式来匹配Access等字段,我将如何表达以下语句?示例与此Access Query和Filter Criteria网页上的示例类似.与在Access中一样,大小写不敏感.

  1. "伦敦"

    符合伦敦一词的字符串.

  2. "伦敦"或"巴黎"

    完全匹配伦敦或巴黎的字符串.

  3. 不是"伦敦"

    任何字符串,但伦敦.

  4. 喜欢"S*"

    以字母s开头的任何字符串.

  5. 喜欢"*st"

    任何以字母st结尾的字符串.

  6. 喜欢"*the*dog*"

    包含"the"和"dog"字样的任何字符串,包含之前,之间或结尾处的任何字符.

  7. 像"[AD]*"

    任何以字母A到D开头的字符串,后跟其他任何字符串.

  8. 不喜欢"*伦敦*"

    任何字符串都不包含伦敦这个词.

  9. 不喜欢"L*"

    任何不以L开头的字符串

  10. 喜欢"L*"而不喜欢"伦敦*"

    任何以字母L开头但不以伦敦字开头的字符串.

regex ms-access vba

3
推荐指数
1
解决办法
2万
查看次数

分析字母数字字符串的格式

我正在尝试编写一个接受字符串的函数,解析它,并返回另一个字符串,该字符串汇总了原始字符串中连续的字母或数字字符的数量.

例如,字符串999aa45bbx将返回3N2A2N3A,即

  • 3个数字,
  • 然后是2 alpha,
  • 按2个数字,
  • 由3 alpha.

我正在使用该功能来分析保险单ID号的格式.到目前为止,我发现在线解决方案提取字母或数字字符,但没有描述原始字符串中存在这些字符的格式或顺序.

有人可以帮忙吗?

regex vba

2
推荐指数
1
解决办法
9346
查看次数

标签 统计

vba ×4

ms-access ×3

regex ×3

ruby ×2

csv ×1

distinct ×1

fastercsv ×1

inject ×1

sql ×1

union ×1