【问题标题】:Check if a number is between a range using SQL & C#使用 SQL 和 C# 检查数字是否在范围之间
【发布时间】:2017-05-13 23:56:55
【问题描述】:

我有一张包含以下信息的表格:

ID   Name                  Range          Checked
1    Jennifer             000-100           0
2    Louis                101-200           0
3    Michael              201-300           0

范围是他们拥有的票数,选中的列是已经使用的票数。

我要做的是在使用票证时在 Checked 列中添加+1,因此我想检查票证所属的位置。我的意思是,如果我使用 103 号票,我想在第 2 行检查的列中添加 1。如果我使用更多票,则依此类推。

ID   Name                  Range          Checked
1    Jennifer             000-100           0
2    Louis                101-200           1
3    Michael              201-300           0

那么,有没有办法检查我提交的票证是否在其中一个范围之间?

PD.:我知道如何在 SQL 中检查一个数字是否介于两个数字之间,我也知道如何使用 C# 从特定行获取信息,但我不知道如何检查整个表以查看数字是否在范围列之间。

【问题讨论】:

  • 这对您来说可能已经很明显了,但是您永远不应该将多个内容存储到一列中,例如范围。你应该有 2 个数字列。
  • 非常感谢。我会考虑的。

标签: c# sql sql-server tsql


【解决方案1】:

如果范围值是 3 位数字,left() 和 right() 可以解决问题,而无需查找破折号。

示例

Update YourTable 
   Set Checked=Checked+1
 Where 103 between left(Range,3) and Right(Range,3)

Select * from YourTable

结果

ID  Name        Range     Checked
1   Jennifer    000-100   0
2   Louis       101-200   1
3   Michael     201-300   0

编辑 - 变量范围的 CharIndex() 选项

Update @YourTable 
   Set Checked=Checked+1
 Where 103 between left(Range,charindex('-',Range+'-')-1) and Right(Range,len(Range)-charindex('-',Range+'-'))

【讨论】:

  • 很好的解决方案,但它回答限制为- char 之间的 3 个字符。也许使用CHARINDEX 函数可以提供更好的解决方案。
  • @FelipeOriani 同意,因此是我的最高评论。但是,您是对的,因此我将使用 charindex() 添加第二个选项
  • 非常感谢。第一个解决方案适用于 3 位数字的范围,而另一个解决方案适用于超过 3 位数字的范围?
  • @EdgardeJesusCeballosGarcia 正确。如果你只有 3 位数,那么第一个更有效。但是,第二个将支持固定或可变。
  • 非常感谢@JohnCappelletti
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多