Показанный код Java отлично работает, предполагая, что doubleValue является float или double.
Как предложено здесь , Intent обрабатывается OutgoingCallBroadcaster.processIntent (), который обрабатывает Строка, указанная в намерении, вызовите PhoneNumberUtils.convertKeypadLettersToDigits () и PhoneNumberUtils.stripSeparators()
.
Последний разделит все, кроме чисел, *
, #
, +
и символы WILD
, WAIT
и PAUSE
.
Здесь теряется ваш разделитель десятичных чисел.
Таким образом, либо разделитель должен быть экранирован до определенного числового значение или заменяется одним из принятых символов, чтобы фактически покинуть ваш телефон и добраться до приемника.
Тот, кто несет ответственность за принимающую сторону, может, вероятно, советовать вам правильно форматировать десятичное число.
Вы передаете выражение, которое Вы хотите сгруппировать, а не псевдоним
SELECT LastName + ', ' + FirstName AS 'FullName'
FROM customers
GROUP BY LastName + ', ' + FirstName
К сожалению, Вы не можете сослаться на свой псевдоним в операторе GROUP BY, необходимо будет записать логику снова, удивительный, поскольку это кажется.
SELECT LastName + ', ' + FirstName AS 'FullName'
FROM customers
GROUP BY LastName + ', ' + FirstName
Поочередно Вы могли поместить выбор в подызбранное или общее выражение таблицы, после которого Вы могли сгруппироваться на имени столбца (больше псевдоним.)
Это - то, что я делаю.
SELECT FullName
FROM
(
SELECT LastName + ', ' + FirstName AS FullName
FROM customers
) as sub
GROUP BY FullName
<час> Эта техника применяется простым способом к Вашему сценарию "редактирования":
SELECT FullName
FROM
(
SELECT
CASE
WHEN LastName IS NULL THEN FirstName
WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName
END AS FullName
FROM customers
) as sub
GROUP BY FullName
Учитывая Ваше отредактированное описание проблемы, я предложил бы использовать COALESCE()
вместо того громоздкого CASE
выражение:
SELECT FullName
FROM (
SELECT COALESCE(LastName+', '+FirstName, FirstName) AS FullName
FROM customers
) c
GROUP BY FullName;
Мое предположение:
SELECT LastName + ', ' + FirstName AS 'FullName'
FROM customers
GROUP BY LastName + ', ' + FirstName
Oracle имеет подобное ограничение, которое является раздражающим. Мне любопытно, если там существует лучшее решение.
Для ответа на вторую половину вопроса это ограничение относится к более сложным выражениям, таким как оператор выбора также. Лучшее предложение я видел его для использования подвыбора для именования сложного выражения.
В старом FoxPro (я не использовал его начиная с версии 2.5), Вы могли записать что-то вроде этого:
SELECT LastName + ', ' + FirstName AS 'FullName', Birthday, Title
FROM customers
GROUP BY 1,3,2
мне действительно понравился тот синтаксис. Почему это не реализовано больше нигде? Это - хороший ярлык, но я предполагаю, что это вызывает другие проблемы?
Если Вы хотите избежать путаницы оператора выбора, находящегося в Вашем запросе дважды, можно хотеть поместить его в Пользовательскую Функцию.
Извините, но SQL Server не представил бы набор данных перед Группой пунктом, таким образом, псевдоним столбца не доступен. Вы могли использовать его в Порядке.
SELECT
CASE
WHEN LastName IS NULL THEN FirstName
WHEN LastName IS NOT NULL THEN LastName + ', ' + FirstName
END AS 'FullName'
FROM
customers
GROUP BY
LastName,
FirstName
Это работает, потому что формула, которую Вы используете (Оператор выбора) никогда не может давать тот же ответ для двух различных исходных данных.
Дело обстоит не так, если Вы использовали что-то как:
LEFT(FirstName, 1) + ' ' + LastName
В таком случае "James Taylor" и "John Taylor" оба привел бы к "J Taylor".
, Если Вы хотели, чтобы Ваш вывод имел "J Taylor" дважды (один для каждого человека):
GROUP BY LastName, FirstName
, Если бы, однако, Вы хотели всего одну строку "J Taylor", Вы хотели бы:
GROUP BY LastName, LEFT(FirstName, 1)
Извините, это не возможно с SQL Server MS (возможный хотя с PostgreSQL):
select lastname + ', ' + firstname as fullname
from person
group by fullname
Иначе просто использование это:
select x.fullname
from
(
select lastname + ', ' + firstname as fullname
from person
) as x
group by x.fullname
Или это:
select lastname + ', ' + firstname as fullname
from person
group by lastname, firstname -- no need to put the ', '
вышеупомянутый запрос быстрее, группирует поля сначала, затем вычисляют те поля.
следующий запрос медленнее (он пробует к [1 110], вычисляют сначала избранное выражение, затем он группирует записи на основе того вычисления).
select lastname + ', ' + firstname as fullname
from person
group by lastname + ', ' + firstname