首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL -比较2个文本字段

SQL -比较2个文本字段
EN

Stack Overflow用户
提问于 2014-09-19 04:05:07
回答 2查看 747关注 0票数 0

我使用的是一个叫做FME桌面的软件。在这个软件中,我们可以通过一个名为transformer的项目发出SQL命令。我正在使用一个名为SQLExecutor的转换器,它使用一个非常简单的查询来进行比较。下面是我试图对这个SQL查询做什么的解释,以及当我试图比较两个文本字段时它不起作用的事实。

我认为我的问题是SQL在SQLExecutor中使用时的局限性。假设我有一个名为TEST.LEASE的数据层,我想将它与基于一个唯一ID字段的EDIT.LEASE层进行比较。这两个层都在同一个数据库中。我们使用SQL Server存储我们存储的数据。两个层中都有一个名为GIS_ID的文本字段,这是一个唯一的ID字段。当我们完成了数据的QA/QC,并且我们对数据可以上传到EDIT.LEASE感到满意时,我们就会运行一个TEST.LEASE作业,作为我们的推广工具。这个推广工具所做的是检查TEST.LEASE中的各个字段,以确保它们符合上传的条件(这部分工作100%没有问题)。

就在它们被提升到EDIT.LEASE之前,我们需要知道这是否会是一个全新的记录,在这种情况下,我们将使用FME进行插入。如果GIS_ID碰巧已经存在,那么我们需要对这些记录进行更新。我们拥有的工具可以很好地确定它是插入还是更新,除了一件看似很小的事情…只有当文本字段中包含的数字中没有字母时,它才起作用。

仅供参考:我们公司的某个人决定将GIS_ID字段设置为文本字段。在我看来,它应该是一个整型字段,因为比较会非常容易。但我现在不能改变这一点,它已经被比我赚得更多的人决定它将是一个文本字段。

如前所述,…GIS_ID是一个文本字段(在两个层中,它们都是相同大小的,两个层中的字段没有区别)。正如您可能知道的,当字段中包含的所有内容都是数字时,SQL并不关心它是文本字段还是整数字段。它仍然可以将202与202进行比较以查看它们是否彼此相等。在我的示例中,假设我在TEST.LEASE和EDIT.LEASE中都有一条记录,其中它们的GIS_ID字段都等于09198760。当我运行下面的查询时,它运行得很好。

代码语言:javascript
复制
select OBJECTID 
from TEST.LEASE_UPDATE_INSERT_WRITER 
where GIS_ID = @Value(GIS_ID)

正如我前面提到的,如果两个GIS_ID文本字段中都只有数字,那么它可以完美地处理数据。但是,如果只有一条记录包含实际的alpha,则SQL查询将出错。

因此,如果SQL的值为09198760a01,那么一旦查询到达GIS_ID中的“a”,就会返回GIS_ID错误。我并不是在寻找一种让工作继续并忽略这些记录的方法,因为我需要加载所有记录。我需要知道是否有人知道如何添加或重写上面的查询,以便加载“仅数字文本字段”和“包含字母字段的数字”。

我希望这个冗长的解释是清楚的。如果不是,请告诉我。谢谢你能为我提供的任何帮助

诚心诚意,Tex

EN

回答 2

Stack Overflow用户

发布于 2014-09-19 04:36:20

我假设@value是给您带来问题的函数。我简单地检查了一下他们的文件。看起来你需要像这样封装'@value(GIS)‘

http://fmepedia.safe.com/articles/How_To/Executing-a-Stored-Procedure-on-Microsoft-SQL-Server-with-FME

票数 0
EN

Stack Overflow用户

发布于 2014-09-19 13:10:15

Jeff是对的,对于普通的sql用户,甚至是在他们的应用程序代码中使用sql的人来说,如果你像上面提到的op那样比较文本,那么你需要使用单‘引号’。

其中avalue = 'myvalue‘

否则,sql server会认为它是一个int,因此当他传入的值只是数字时,它才会起作用。在传递参数时,并不总是很容易判断出问题是什么。

其中avalue = @myvalue

所以你需要注意这一点。我只是想提一下这一点,也许这对其他有类似问题的人有帮助。当我们从一个连接了id字段的字段中得到错误时,我发现了这一点,即当value = 2,而不是2,3等时,它可以工作。将参数用单引号括起来很容易解决这个问题,因为在我们的例子中,我们真正关心的是value = '2‘。

希望这是有意义的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25921430

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档