Respostas:
Sim você pode.
Use a calculadora de campo com a seguinte expressão:
left( "Name", strpos( "Name" ,'-'))
A função strpos () retornará a posição de índice do primeiro caractere '-' e a função left () "apara" a string antes dessa posição.

Você pode usar a calculadora de campo com a seguinte expressão:
string_to_array("Nombre", ' ')
A função string_to_array () divide a string em uma matriz usando o delimitador fornecido.
Se você deseja alguma posição da matriz, pode adicionar a posição e ela retornará o valor. como isso:
string_to_array("Nombre", ' ')[2]
Possível solução por meio do PyQGIS.
Vamos assumir que existe uma camada de pontos chamada "some_points"com sua tabela de atributos, veja a imagem abaixo.
Prossiga Plugins > Python Console > Show Editore cole o script abaixo
from PyQt5.QtCore import QVariant
layer = iface.activeLayer()
if not layer.isValid():
print("Layer failed to load!")
layer_provider = layer.dataProvider()
layer_provider.addAttributes([QgsField("Test", QVariant.String)])
layer.updateFields()
features=layer.getFeatures()
layer.startEditing()
for f in features:
attrs = {2: f['info'].split('-')[0]}
layer_provider.changeAttributeValues({f.id(): attrs})
layer.commitChanges()
A saída estará procurando
Referências:
.split()função python ?