Вот UDF, который сделает это. Это возвратит таблицу разграниченных значений, не попробовали все сценарии на нем, но Ваш пример хорошо работает.
CREATE FUNCTION SplitString
(
-- Add the parameters for the function here
@myString varchar(500),
@deliminator varchar(10)
)
RETURNS
@ReturnTable TABLE
(
-- Add the column definitions for the TABLE variable here
[id] [int] IDENTITY(1,1) NOT NULL,
[part] [varchar](50) NULL
)
AS
BEGIN
Declare @iSpaces int
Declare @part varchar(50)
--initialize spaces
Select @iSpaces = charindex(@deliminator,@myString,0)
While @iSpaces > 0
Begin
Select @part = substring(@myString,0,charindex(@deliminator,@myString,0))
Insert Into @ReturnTable(part)
Select @part
Select @myString = substring(@mystring,charindex(@deliminator,@myString,0)+ len(@deliminator),len(@myString) - charindex(' ',@myString,0))
Select @iSpaces = charindex(@deliminator,@myString,0)
end
If len(@myString) > 0
Insert Into @ReturnTable
Select @myString
RETURN
END
GO
Вы назвали бы его как это:
Select * From SplitString('Hello John Smith',' ')
Редактирование: Обновленное решение обработать delimters с len> 1 как в:
select * From SplitString('Hello**John**Smith','**')
В Swift:
let f = view.layer.valueForKeyPath("transform.rotation.z")!.floatValue
В Objective-C:
NSNumber* n = [self.layer valueForKeyPath:@"transform.rotation.z"];
CGFloat f = [n floatValue];
Если вам нужен более краткий, однострочный способ сделать это, вы можете сделать:
CGFloat f = [[self.layer valueForKeyPath:@"transform.rotation.z"] floatValue];