Я бы попробовал использовать для этого регулярное выражение; не выписывайте парсер самостоятельно, если вам это не нужно.
Я предполагаю, что ваша строка состоит только из буквенных символов, что все цитируемые группы непусты (т. Е. Между кавычками всегда есть несколько символов), и что у вас нет открытых кавычек.
Это, кажется, работает:
import re
s = "AB'CD'E"
splits = re.findall("\"[A-z]+\"|'[A-z]+'|[A-z]", s)
# ['A', 'B', "'CD'", 'E']
",".join(splits)
# "A,B,'CD',E"
Данное регулярное выражение ищет группы буквенных символов, заключенных в двойные или одинарные кавычки, или только в одиночные символы.
LEFT(colName, 1)
will also do this, also. It's equivalent to SUBSTRING(colName, 1, 1)
.
I like LEFT
, since I find it a bit cleaner, but really, there's no difference either way.
I prefer:
SUBSTRING (my_column, 1, 1)
because it is Standard SQL-92 syntax and therefore more portable.
Strictly speaking, the standard version would be
SUBSTRING (my_column FROM 1 FOR 1)
The point is, transforming from one to the other, hence to any similar vendor variation, is trivial.
p.s. It was only recently pointed out to me that functions in standard SQL are deliberately contrary, by having parameters lists that are not the conventional commalists, in order to make them easily identifiable as being from the standard!
SUBSTRING (MyColumn, 1, 1)
для первого символа и SUBSTRING (MyColumn, 1, 2)
для первых двух.