Sql server 2008 将数据类型varchar转换为浮点时出错,数据包含字母和数字

Sql server 2008 将数据类型varchar转换为浮点时出错,数据包含字母和数字,sql-server-2008,tsql,Sql Server 2008,Tsql,我从中绘制数据的列中随机分布了数字和字母,为了区分它们,我需要两者 示例:207RG0100X(列名为C1) 我正试图用我创建的一个临时表连接另外两个表,该临时表保存这列数据,但我一直得到varchar到float的转换错误。我知道就数据类型而言,float优先于varchar,但我在这方面找到的方法包括ISNUMERIC(),因为我的数据同时包含数字和字母,我认为这不会起作用。有什么建议吗 SELECT CAST([TAXONOMY CODE] AS Varchar(max)) AS Taxo

我从中绘制数据的列中随机分布了数字和字母,为了区分它们,我需要两者

示例:207RG0100X(列名为C1)

我正试图用我创建的一个临时表连接另外两个表,该临时表保存这列数据,但我一直得到varchar到float的转换错误。我知道就数据类型而言,float优先于varchar,但我在这方面找到的方法包括ISNUMERIC(),因为我的数据同时包含数字和字母,我认为这不会起作用。有什么建议吗

SELECT CAST([TAXONOMY CODE] AS Varchar(max)) AS Taxonomy, [SPECIALTY CODE] AS ProviderCode INTO #TaxonomyCodes FROM PS.TaxonomyCode WHERE [TAXONOMY CODE] LIKE '%X'

SELECT Taxonomy, ProviderCode, P.ProviderID, ProcedureCode
FROM #TaxonomyCodes TC, Database..ClaimDetail CD, Database..Claim C, Database..Provider P
WHERE TC.ProviderCode = P.PrescriberType1 AND CD.ClaimID = C.ClaimID AND C.ProviderID = P.ProviderId  

如果数据为字母数字类型,则应将其作为varchar(xx)存储在临时表中,而不是浮点类型。如果要组合数据的表在列中具有不同的数据类型,则可以将float转换为cast(floatColumn转换为VARCHAR(xx))。除非你发布一些SQL查询来提供更好的想法,否则我帮不了你多少忙。

编辑了一个代码示例。我尝试将()强制转换为VarChar,但没有成功。但是您是否将正确的内容强制转换为VarChar(请不要使用max,除非您认为该字段将包含4000多个字符)。我相信我这样做了。这是整个问题,所以这是我不知道的。我在分类法列的第二个SELECT语句中放置了一个CAST(),作为CAST(分类法为VarChar(50)),但这不起作用。它引用了查询中未定义的别名(PC)。你也有一个交叉连接,无论是有意还是无意。使用隐式语法是一个非常坏的习惯——如果使用explict连接,您会立即注意到这个问题。为什么你使用的连接语法在上个世纪已经被更好的东西取代了?那台pc应该是C。我在添加注释时做了一些更改,使其更匿名,但忘了更改它。这种类型的加入是我在学校学到的,所以我一直坚持下去。所以连接不是问题,而是转换。您在第一个或第二个查询中出错了吗?错误的确切文本是什么。如果您认为隐式联接是可接受的,则可能需要阅读此内容:在同一查询中使用类似“%X”的“WHERE[TAXONOMY CODE]是没有意义的。而是在执行转换时将所有记录插入临时表,然后在第二个查询中添加一个额外的where子句。