Ich verwende T-SQL. Ich habe diese zwei Saiten.Nur Text links von "-" ziehen
AX20-xxxxxxxx
T11-xxxxxxxxx
Für die erste, die ich möchte ich nur T
AX
Für die zweite ziehen können, wollen.
Ich verwende T-SQL. Ich habe diese zwei Saiten.Nur Text links von "-" ziehen
AX20-xxxxxxxx
T11-xxxxxxxxx
Für die erste, die ich möchte ich nur T
AX
Für die zweite ziehen können, wollen.
Angenommen, Sie benötigen den Teilstring vom Anfang bis zum Auftreten der ersten Zahl, verwenden Sie PATINDEX
, um den Index der ersten Zahl und SUBSTRING
danach zu erhalten.
select substring(colname, 1, patindex('%[0-9]%',colname)-1)
from tablename
Danke, das hat funktioniert. – tp1
Werfen Sie einen Blick auf PATINDEX()
Declare @S varchar(max) = 'AX20-xxxxxxxx'
Select Left(@S,PatIndex('%[0-9]%',@S)-1)
Returns
AX
Dies ist eine sauberere Lösung –
@DuduMarkovitz Meh .. Tomaten, Kartoffeln. Allerdings bin ich ein Python-Typ, aber ich kann mir nicht vorstellen, dass das alles nötig wäre. –
Stellen Sie sich einfach Python-Verarbeitungsfunktionen auf SQL-Zeilenebene vor ... –
In SQL Server Sie Teilzeichenfolge PATINDEX() bekommen erste Ziffer Auftreten und verwenden Sie dann LEFT() Funktion erhalten verlassen können
WITH T AS
(
SELECT 'AX20-xxxxxxxx' as Str
UNION ALL
SELECT 'T11-xxxxxxxxx' as Str
)
SELECT LEFT(Str,PATINDEX('%[0-9]%',Str)-1) FROM T
Ok, ich bin mir ziemlich sicher, dass dies für eine DBMS-Sprache wie sql ist, aber ich werde eine Antwort in Python posten. Denken Sie daran, dies ist wahrscheinlich NICHT die effizienteste Lösung, aber die einzige, die ich denken konnte. Es sollte einfach in jede Sprache zu implementieren sein, aber ich bin nicht sicher über SQL.
def is_number(s):
try:
float(s)
return True
except ValueError:
return False
def pulltext(text):
pulled = []
for x in text:
if x == '-':
index = text.index('-')
for y in text[:index]:
if is_number(y):
pass
else:
pulled.append(y)
pulled = ''.join(pulled)
return pulled
textinput = input('String to pull characters from')
print(pulltext(textinput))
Da dies die falsche Sprache ist, können durch diese gehen: die is_number
Funktion gibt True
, wenn die Zeichenfolge eine Zahl enthält, weil Python hat keine solche Sache.
Zuerst gehen wir durch die Zeichenfolge und finden das '-', das die for-Schleife ist.
Dann schneiden wir den Text von Anfang an auf den Index, wo der ‚-‘ war (das ist, was das ‚:‘ für ist, von Anfang an auf den Index des ‚-‘)
Als nächstes werden wir gehe durch jedes Zeichen vor dem '-' (die for-Schleife); und prüfe, ob es eine Nummer mit der vorherigen Funktion ist. Wenn es sich nicht um eine Nummer handelt, fügen Sie sie zu einer Liste hinzu.
Am Ende einfach die Liste in eine Zeichenfolge, und drucken Sie diese Zeichenfolge.
Ich hoffe, dass geholfen, und ich apoligize die falsche Sprache für die Verwendung, aber ich denke, Python die beste Sprache ist logisch zu erklären, mit :)
bitte Ihre dbms markieren. –
Was [tag: rdbms] verwenden Sie? – Mureinik
Willkommen bei Stack Overflow! Dies ist eine Website, wo Sie Fragen stellen können und Antworten auf Probleme bekommen, die Sie mit der Software haben, die Sie geschrieben haben, aber es ist keine "tu meine Hausaufgaben für mich" oder "tue meine Arbeit für mich" -Seite. Wenn Sie eine Frage stellen, sollten Sie den Code, den Sie geschrieben haben, und die spezifischen Fehler, die Sie erhalten, oder die Ergebnisse, die Ihr Programm produziert, und eine Erklärung der erwarteten Ergebnisse einbeziehen. Ohne das gibt es wirklich nicht viel, was wir tun können, um dir zu helfen. Bitte bearbeiten Sie Ihre Frage, um zu zeigen, was Sie getan haben und welche Probleme der Code hat. Willkommen zu Stack Overflow! –