回答

收藏

RODBC sqlQuery()应返回varchar(MAX)时返回varchar(255)

技术问答 技术问答 96 人阅读 | 0 人回复 | 2023-09-13

我正在这个RODBC程序包从数据库查询文本列。基于数据库的数据库Microsoft SQL Server 2008
. O! a6 n# N* w6 [; lR2构建。SQL中列数据类型为nvarchar(max)。
% [1 C. }6 d3 x; l! |- l$ `: ~$ j8 E; y但是,运行时:
: H: R  U6 j5 v! p) e# Set up ODBC connection to CCWEB5 production server# Note: default database is set to "CCSalary"ccweb5.prod 在SQL我期待(对于第一行):+ s* m+ K0 Y4 H( g( s
JobTitle                     JobText              JobTextLengthIT Field Service Technician    2742但当我这样做的时候: nchar(as.character(job.text[1,2]))% \$ h' E8 H5 M" l* M
它返回: 255    。/ x) i, |8 J0 t. D& ~; V# H$ D
所以我的问题是,是什么导致了这种截断,我该如何避免呢?!!
' c4 x% w0 P# K                                                                5 ^5 P( Z, F# y9 B, o( I
    解决方案:                                                               
# d! S, N4 D4 i8 z# x5 l8 b" O6 ]                                                                好吧,看来我已经找到了解决办法。Google搜索后,我发现:
2 t, ~+ {2 Q  s4 N% SSQL Native Client
' T/ [# \8 O1 l, x" }ODBC驱动程序需要考虑的一件事是VARCHAR(MAX)没有固定的固定的尺寸ODBC驱动程序通过返回最大列大小0来表示这个大小。如果不检查它的大小,可能会让你的应用在特殊情况下感到困惑。
# K; z; c0 d8 b# j& M9 ]1 q5 V请参考本文底部:http :
' J. T' u, |+ {. O) W//msdn.microsoft.com/zh-
  ?5 S4 w2 F! W- M2 }4 pcn/library/ms130896.aspx但总的来说,我在任何地方.NET这种情况在应用程序中没有看到,因为它是在ADO中得到了正确处理。网。) U) Q4 V" x& |: |8 x' g
来源:http://bytes.com/topic/sql-server/answers/808461-cannot-read-varchar-. N+ E3 T/ ~, @2 d
max0 g: R: `+ i+ _! y. w/ \( T' s, Z. O
因此,就我而言,以下方法可以解决问题:
8 _" C+ ?  a  V! p" Y6 ejob.text 这样,nchar(as.character(job.text[1,2])现在将返回 2742    (应有结果)。1 |8 {' F: x3 x7 Y& b/ W: O
我在StackOverflow我没有看到任何类似的问题,所以我保留了它。我希望这对某人有帮助!
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则