我从File.txt进行了批量导入。在导入之后,其中一列具有以下文本:
30 x 1,5 mm, O-Ring, EPDM, 70░▒5░ Shore A, schwarz, Tol. nach ISO 3601
但必须是:
30 x 1,5 mm, O-Ring, EPDM, 70°±5° Shore A, schwarz, Tol. nach ISO 3601
我想使用多重替换,如下所示:
,ISNULL(REPLACE(REPLACE(REPLACE([ARTTXT], '░', '°'), '▒', '±'), '▀', 'ß'), '') AS [ARTTXT]
但后来我得到了:
30 x 1,5 mm, O-Ring, EPDM, 70°°5° Shore A, schwarz, Tol. nach ISO 3601
另一行:
Spritzschutz-Ring SRP, Typ SS, DN 25, PP, rot, PN 10-40 f³r Flanschverb. aus 2 Vorschweißfl. EN 1092-1 Fom B,
因此,您看到°
和ß
工作,但±
没有。
为什么呢?我正在使用SQL Server 2008 R2。
谢谢。
Greetz Vegeta_77
更新: @Damien_The_Unbeliever 使用NVARCHAR要好得多。有用!但最后我有问题:
...mittelgr³n - >应该是mittelgrün 所以我的替换是:
REPLACE([ARTTXT], N'³', N'ü')
所以mittelgrün的作品。但我也在替换: 2-381 - > 2-U81
为什么呢?替换不是......,N'3','ü'
答案 0 :(得分:0)
这应解决问题:
,ISNULL(REPLACE(REPLACE(REPLACE([ARTTXT], nchar(9617), '°'), nchar(9618), '±'), nchar(9600), 'ß'), '') AS [ARTTXT]
问题是,所提到的字符 - 如果转换为ascii - 都会产生相同的结果。但是,使用unicode会产生正确的字符。这里的例子是:
SELECT ISNULL(REPLACE(REPLACE(REPLACE(N'30 x 1,5 mm, O-Ring, EPDM, 70░▒5░ Shore A, schwarz, Tol. nach ISO 3601', nchar(9617), '°'), nchar(9618), '±'), nchar(9600), 'ß'), '') AS [ARTTXT]
答案 1 :(得分:0)
现在我有了一个有效的解决方案:
WITH
(
CODEPAGE = 'ACP',
FIELDTERMINATOR = '|',
ROWTERMINATOR = '\n'
)
当我使用Codepage = 'ACP'
时,txt-String以1:1的比例进入我的SQL表。