Wenn Ihr String ist immer das gleiche Format und die Länge zu löschen, dann können Sie SUBSTRING()
und REPLACE()
Funktionen nutzen:
DECLARE @Type NVARCHAR(MAX) = N'163net_YoudaoDictionary_5.0_ZH_x32_CN_W10';
SELECT SUBSTRING(REPLACE (@Type, '_', ' '), 0, 28) AS Result;
Verwenden Sie REPLACE(), um _
durch ein Leerzeichen ' '
zu ersetzen.
Verwenden Sie SUBSTRING(), um die benötigte Zeichenfolge aus Ihrer Zeichenfolge zu schneiden.
Wenn Sie verwenden möchten PATINDEX()
:
SELECT REPLACE(SUBSTRING(@Type, 0, PATINDEX('%[_][A-Z][A-Z][_]%', @Type)), '_', ' ') AS Result;
Update:
Sie haben keine Beispieldaten zur Verfügung stellen, aber hier ist ein Beispiel:
CREATE TABLE MyData (
STR NVARCHAR(MAX)
);
INSERT INTO MYData VALUES
(N'163net_YoudaoDictionary_5.0_ZH_x32_CN_W10'),
(N'164net_YoudaoDictionary_4.0_HZ_x86_CN_W10_UD78_KIU7'),
(N'165net_YoudaoDictionary_4.1_ZH_x32'),
(N'166net_YoudaoDictionary_3.0_LF_x32_KO_X16'),
(N'167net_YoudaoDictionary_1.0_EX_x86_RW_B28');
SELECT REPLACE(SUBSTRING(STR, 0, PATINDEX('%[_][A-Z][A-Z][_]%', STR)), '_', ' ') AS Result
FROM MyData;
Ergebnis:
+-----------------------------+
| Result |
+-----------------------------+
| 163net YoudaoDictionary 5.0 |
| 164net YoudaoDictionary 4.0 |
| 165net YoudaoDictionary 4.1 |
| 166net YoudaoDictionary 3.0 |
| 167net YoudaoDictionary 1.0 |
+-----------------------------+
Möchten Sie die Unterstreichungen genauso gut entfernen, wie nach Ihrer erwarteten Ausgabe? –
Ja, wie ich geschrieben habe, sollte die Ausgabe 163net YoudaoDictionary 5.0 (kein Unterverzeichnis) sein –
Würde '_Yo' nicht auch' _XX' passen, oder suchen Sie nur nach Großbuchstaben? – Aquillo